WordPress

Witaj Gościu ( Zaloguj | Rejestruj )

Każdy temat założony w ewidentnie złym dziale będzie usuwany! Proszę czytać opisy działów i regulamin!

 
Reply to this topicStart new topic
> Import danych (przez sql/xml/wysylanie POST z php/jakkolwiek inaczej)
Dinth
post 14.2.2008 - 10:48
Post #1


aktywność:
*

Grupa: Bloger
Postów: 10

Nr: 3 043



Witam.
Mam problem - potrzebuje importowac do Wordpress duze ilosci wpisow (informacje o przyszlych imprezach) z timestampem w przyszlosci, tj zaznaczonych do automatycznej publikacji w danym dniu.
Niestety od kilku dni zabieram sie na to z roznych stron i caly czas bezskutecznie.

Najpierw probowalem preparowac pliki .sql.

Kod wygladal mniej wiecej tak:
KOD
for (...) {
fwrite($f,"INSERT INTO wp_posts (ID,post_author,post_date,post_date_gmt,post_content,post_title,post_category
post_status,comment_status,ping_status,post_name,post_modified,post_modified_gmt
guid,post_type) VALUES (".$i.",1,'".$date."','".$date."','".$tekst."','".$title."',0,'future','closed','closed','".$title."','".$date."','".$date."','http://www.xxx.pl/?p=".$i."','post');\n");
$md5 = md5(serialize(array($i)));
$cron = $cron.'i:'.strtotime($date.'GMT').';a:1:{s:19:"publish_future_post";a:1:{s:32:"'.$md5.'";a:2:{s:8:"schedule";b:0;s:4:"args";a:1:{i:0;i:'.$i.';}}}}';
}
$cron = $cron.'}';
fwrite($f, 'UPDATE wp_options SET option_value = \''.$cron.'\' WHERE option_id = \'102\';');

Posty owszem importowalo z przyszlym timestampem, jednak prawdopodobnie zle preparowalem rekord "cron" w wp_options, poniewaz wtedy kiedy post powinnien sie ukazac nic sie nie dzialo i trzeba bylo go recznie otworzyc do edycji i zapisac zeby sie ukazal. Niestety skladnia tej opcji "cron" w wp_options nie jest udokumentowana, albo przynajmniej ja nie znalazlem jej dokumentacji wiec nie wiem gdzie popelnilem blad:(

Nastepnie probowalem spreparowac plik XML (XRS) Wordpressa, takim kodem:
KOD
fwrite($f,'<?xml version="1.0" encoding="UTF-8" ?>\n<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wp="http://wordpress.org/export/1.0/">\n<channel>');
for (...) {
fwrite($f,'<item>\n<title>'.$title.'</title>\n<link>http://www.xxx.pl/?p='.$i.'</link>\n<pubDate>'.$date.'</pubDate>\n<dc:creator>admin</dc:creator>\n<guid isPermaLink="false" />\n<description/>\n<content:encoded>\n<![CDATA['.$tekst.']]>\n</content:encoded>\n<wp:post_id>'.$i.'</wp:post_id>\n<wp:post_date>'.$date.'</wp:post_date>\n<wp:post_date_gmt>'.$date.'</wp:post_date_gmt>\n<wp:comment_status>open</wp:comment_status>\n<wp:ping_status>open</wp:ping_status><wp:post_name>'.$title.'</wp:post_name>\n<wp:status>future</wp:status>\n<wp:post_parent>0</wp:post_parent>\n<wp:menu_order>0</wp:menu_order>\n<wp:post_type>post</wp:post_type>\n</item>\n');
}
fwrite($f, '</channel>\n</rss>');

niestety mimo tego ze plik wynikowy wyglada poprawnie, baa, WP nawet widzi ze sa w nim posty bo upomina sie przy imporcie jakiemu uzytkownikowi je przypisac, to finalnie jednak żadne posty się nie pojawiają ani w WP ani nawet w bazie danych.
Co więcej, niestety ten kod nawet jak zadziała może nie spełniać warunków ponieważ nigdzie w import.php nie zauwazylem instrukcji warunkowej wrzucajacej post do "cron" w wp_options gdy timestamp jest w przyszlosci (taka instrukcja jest w post.php na przyklad).

Jeśli ma ktoś pomysł co zrobić aby powyższe sposoby zadziałały albo potrafi wyjaśnić co dokladnie powinno byc w opcji "cron" w "wp_options", albo zna jakis inny sposob na zaimportowanie do odpowiednich kategorii/z odpowiednimi tagami postow ktore maja ukazac sie w przyszlosci, bede naprawde bardzo wdzięczny.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



Wersja Lo-Fi Aktualny czas: 7 01 09 - 19:50
WebFan | Forum Komputerowe | Spotkania blogerów