
Внимание! Этот пост устарел, новую информацию по классу смотреть тут:Апдейт класса wp-poster.
Публикую класс для работы с WordPress через XML-RPC. На самом деле я не работаю с XML-RPC напрямую, более того, так не делает даже сам Вордпресс. Мы вместе с Вордпрессом используем класс IXR_Client. Существует множество разных API для постинга в блоги, такие как WordPress API , Blogger API, MetaWeblog API, MovableType API. В общем мой класс это реализация шаблона Фасад для упрощения использования этих API.
Эта версия - глубокая альфа, однако, она вполне рабочая. Что будет с ней дальше - фиг знает. Мне могут дать на работе задание совершенно не связанное с Вордпрессом и все, я уже не буду успевать работать над классом. Но пока все идет хорошо)
Сам класс можно скачать вот тут: . В комплекте идет требуемый IXR_Client.
Далее написано как его использовать:
Вот простой пример использования моего класса.
<?php require ('/classes/wp_poster.php'); require ('/classes/ixr_client.php'); $poster = wp_poster::getInstance(); $blog = new wp_blog('http://site.ru/blog/xmlrpc.php', 'admin', 'password', 0); $content_struct['title']= 'текст'; $content_struct['description']= 'текст до _читать далее_'; $content_struct['mt_text_more'] = 'текст после _читать далее_'; $content_struct['mt_allow_comments']= 'closed'; // open|closed $content_struct['mt_keywords']= 'теги,теги,теги'; $content_struct['categories']= explode(',', 'категория1,кат2'); $content_struct['published']= 0; $post = new wp_post($content_struct); $poster->post($blog, $post); ?>
Пара замечаний: <ВАЖНО>Вордпресс принимает UTF-8!</ВАЖНО>, так же категории не создаются автоматически, это не баг, это фича. Я позже сделаю мануал где опишу как создавать категории. (Это уже можно делать, если хотите поковыряйте код моего класса). Так же обратите внимание, что категории идут массивом, а теги строкой.
А еще я писал про:










Декабрь 9th, 2008 at 16:52
Щас скачаем, посмотрим твое творение…
Декабрь 9th, 2008 at 16:56
Красиво написано, мне понравилось.
P.S.: Особенно понравилось: «Link me and do what the fuck you want. I’m not responsible for anything»
Жесть!
Декабрь 9th, 2008 at 16:58
Эт не я придумал) Вроде на хабре в каментах где-то было про «do what the fuck you want», я чуть добавил только)
Декабрь 10th, 2008 at 13:03
Давно хотел сделать постинг через xml-rpc, но честно говоря влом было разибраться. А тут уже готовый класс. Спасибо
Декабрь 13th, 2008 at 01:39
огромное спасибо за проделанную работу. собственно говоря, вот – . существует уже несколько месяцев, сделан с помощью нескольких костылей, бутылки пива и соответствующей матери. может объединим усилия и создадим прекрасное?
Декабрь 17th, 2008 at 13:55
А дату публикации можно передать? Судя по всему аргумент «dateCreated» IXR не понимает…
Декабрь 17th, 2008 at 14:06
Так, посмотрю сейчас.
Блоггер постит так:
$post_date = current_time(‘mysql’);
$post_date_gmt = current_time(‘mysql’, 1);
а вот metaWeblog поддерживает дату публикации.
if ( !empty( $content_struct['date_created_gmt'] ) ) { …
Но думается мне, что надо туда посылать не просто дату, а объект IXR_Date
Декабрь 17th, 2008 at 14:18
Ага, точно! Нужно объект отправлять, а я решил, что ему надо дату в ISO…
Январь 25th, 2009 at 12:09
Ваш скрипт выдает «яЛП» при постинге что бы это могло значить? Кодировка поста UTF-8, посты при этом не постятся(
Январь 25th, 2009 at 12:36
Попробовал постить как описано здесь http://www.charnad.com/blog/publikuem-v-blog-na-wordpress-cherez-xml-rpc/
все работает, через ваш класс выдает только те символы(.
Январь 25th, 2009 at 17:25
2Oleg
Чтобы постилось нужно published выставить в единицу. При нуле посты идут в черновики.
Для корректного постинга в UTF-8 нужно перекодировать строки в UTF-8, т.е. или сохранить скрипт в этой кодировке или с помощью iconv:
$str = iconv(«cp1251″, «UTF-8″, «Пора переходить на юникод.»);
Январь 25th, 2009 at 21:03
Да. Надо бы написать мануал, чтобы обьяснить что и как..
Январь 27th, 2009 at 00:06
Подскажите как реализовать отложенный постинг? ковырял предложенный скрипт и ixr_client.php, постит только по текущей дате…
Январь 27th, 2009 at 00:29
Извините, понял сам)
Спасибо класс, очень пригодился)
Январь 27th, 2009 at 10:25
Всегда пожалуйста. Класс будет обновляться, так что заглядывайте иногда за изменениями)
Правда происходить это будет очень медленно, т.к. работа и учеба.
Февраль 26th, 2009 at 01:04
А как получить урл записи которую запостили?
Февраль 26th, 2009 at 11:03
Функция возвращает ID записи. Должно быть site.com/?p=id
Февраль 26th, 2009 at 17:02
Возвращает «OK»
$res = $poster->post($blog, $post);
$res :
Array
(
[0] => OK
)
Февраль 26th, 2009 at 18:15
Ааа.. ОК это значит хорошо) Вы там смотрите, published = 0. Это значит кладется в черновики. Измените на 1 и будет публиковаться сразу.
Февраль 26th, 2009 at 18:31
поставил $content_struct['published'] = 1; публикуется, но всё равно возвращает только «ОК» )
Март 12th, 2009 at 17:54
Афигеть! Работает! Неделю искал что-то подобное и работающее! Спасибо большое:)
Март 15th, 2009 at 22:58
А подскажите – как сделать отложенную публикацию?:)
Март 15th, 2009 at 23:34
Создайте экземпляр класс IXR_Date и передайте его в качестве параметра. Название параметра ‘date_created_gmt’ или ‘dateCreated’. Соответственно дата по GMT и, видимо, локальное время. Достаточно передать 1 параметр. Когда руки дойдут я сделаю удобный постинг, но работа, учеба..
Март 16th, 2009 at 17:35
Спасибо, хоть и мало понятно для такого чайника как я. Хотя моих знаний паскаля хватило чтобы разобраться с твоей программой и даже слегка ее модифицировать под себя:)
Март 27th, 2009 at 11:43
А как скачать? Пишет 404 Not Found
Март 27th, 2009 at 14:27
А, это после переезда забыл закачать. Теперь все ок.
Март 27th, 2009 at 15:07
Спасибо большое, отличный класс, еще бы побольше возможностей, как то список рубрик с их именами и id
– отписал про класс
Март 28th, 2009 at 09:31
Хочу при создании топика в блоге поменять даты, например, set_date_created_gmt – формат даты какой ставить?
Март 28th, 2009 at 09:37
А, разобрался, отключил проверку
//if (strlen($value) > 0)
и написал
$post->set_dateCreated(new IXR_Date($datecreate));