| Пригодился класс? |
Скачать можно:
Wp-poster (13.8 KiB)
Вопросы:
- Что это такое?
- Зачем это надо?
- Как мне отправить пост на блог?
- Что значит '32700 parse error. not well formed'
- Что значит 'XML-RPC services are disabled on this blog.'
- Как мне создать категории?
- Как мне узнать ID поста?
- Когда будет можно делать ххххх?
- Какие версии WordPress совместимы?
- Какие условия использования?
- У меня вырезаются все теги, что делать?
Ответы:
1. Что это такое?
Это PHP класс написанный мной на работе для упрощения отправки постов в блог на WordPress. По сути, сам класс является лишь фасадом к классу IXR_Client, который производит общение по протоколу XML-RPC с блогом. Класс мной выложен в свободное использование.
Некоторые люди хотят организовать кросс-постинг, некоторые хотят иметь возможность сразу отправлять несколько постов. У каждого свои цели. Класс - это лишь инструмент, а уж цель придумывает пользователь.
3. Как мне отправить пост на блог?
Пример:
<?php
require ('/wp_poster.php');
require ('/ixr_client.php');
$poster = wp_poster::getInstance();
$blog = new wp_blog('http://wordpress/xmlrpc.php', 'test', 'test', 0);
$post = new wp_post();
$post->setTitle('Заголовок поста');
$post->setDescription('Текст до _читать далее_');
$post->setPostStatus('publish');
$poster->post($blog, $post);
4. Что значит '32700 parse error. not well formed'
Это значит, что XML запрос к серверу или ответ содержат ошибки. Для начала проверьте, что вы посылаете текст в формате UTF-8.
5. Что значит 'XML-RPC services are disabled on this blog.'
Это означает, что в блоге выключена настройка, позволяющая отправлять посты через протокол XML-RPC. Вы можете ее включить в панели администратора.
$blog->createCategories(array('категория1', 'категория2'));
Сейчас так:
$id = $poster->post($blog, $post);
Со временем будет изменено на:
$posted = $poster->post($blog, $post);
$id = $posted->getId();
8. Когда будет можно делать ххххх?
Тогда, когда руки дойдут. Я за это не получаю денег и делаю в свое свободное время, котрого к сожалению не очень много.
9. Какие версии WordPress совместимы?
Могу отвечать только за 2.6 и 2.7. С остальными не пробовал.
10. Какие условия использования?
Условия использования WordPress и класса IXR_Client смотрите на сайте вордпресса. Мой класс разрешено использовать и изменять по желанию, запрещено только коммерческое распространение. Класс предоставляется as is, я не не несу ответственности за результаты его использования, все только на свой страх и риск. Все авторские права принадлежат мне. Так же желательно, хотя и не обязательно указывать ссылку на эту страницу.
11. У меня вырезаются все теги, что делать?
Это багрепорт от Kirill'a. Он говорит, что дело в libxml2. При передаче тегов нужена версия <=2.6.32
Update:
Решение проблемы с удалением угловых скобок (тегов). Для вордпресса есть специальный плагин:
http://josephscott.org/code/wordpress/plugin-libxml2-fix/. Говорим спасибо Kinslayer.






Май 22nd, 2009 at 07:23
@CharnaD: в общем, провозился весь день, перечитал кучу форумов, но так ничего и не заработало. Если не сложно, попробуй добавить какое-нибудь сообщение со своего скрипта, который точно работает. Может проблема в самом блоге? [удалено] На этом адресе я поставил новый WP 2.7.1, удалил стандартное сообщение и разрешил удалённую публикацию через XML-RPC. Может нужно ещё какие-нибудь насторойки поменять или поставить плагины?
Май 21st, 2009 at 23:26
Никогда не замечал.. у меня все нормально. Пришлите скрипт в архиве мне на почту (есть в колонке справа) я посмотрю в чем может быть дело.
Май 21st, 2009 at 21:38
Спасибо! Обязательно попробую сделать виртуальных хост. У меня такой еще вопросик: почему может быть такое, что посты «перепутываются»? Для интереса сделал цикл в котором подряд изменяются номера заголовка. Т.е. Сначала пост с title «Заголовок1″, затем «Заголовок2″ и так далее. А при просмотре блога показывается что-то вроде случайного порядка.
Май 21st, 2009 at 21:24
аса74, Юрий правильно говорит, скачайте последнюю версию.
Юрий, на локалхосте работать не будет. Дело в том, что делать fopen, открывать curlом и т.п. нельзя на локалхосте. Вы можете настроить виртуальный хост у себя (как это сделано у меня. у меня локальный вордпресс расположен по адресу . Пропишите его в hosts (например wordpress 127.0.0.1) и пользуйтесь
Май 21st, 2009 at 21:08
А вы не пробовали запускать скрипт на локалхосте? У меня сплошные ошибки вылетают.
Май 21st, 2009 at 11:51
@Viper, я об этом и говорю. Для нормальной работы нужен как раз 200. А у вас 500. Это говорит о неправильной настройке сервера. Файл должен открываться и писать что-то про то, что «Принимаются только POST запросы». Ищите проблему в сервере. Возможно дело в .htaccess.
UPD: кстати, путь надо указывать не к IXR_Client, а к xmlrpc.php и его же открывать
Май 21st, 2009 at 11:49
2CharnaD: нет, ошибка HTTP status code was NOT 200, т.е. статус НЕ 200.
Скорее всего, у сервера появляются проблемы с библиотекой IXR-Client. Я нашел в инете несколько других способов постить в WP и все они не работают – даёт эту же ошибку. А если в строке адреса ввести путь к библиотеке, то выскакивает Error 500: Internal Server Error.
Май 21st, 2009 at 10:48
@Viper, это означает, что класс искал файл xmlrpc.php в вашем вордпрессе и не нашел. HTTP статус 200 – это значит файл найден и передается. Проверьте правильно ли вы указали путь к файлу, не происходит ли редирект (с этим я не уверен, мешает ли 301й редирект работе класса).
@Юрий, ну да $post, я пишу wp_post – это значит экземпляр этого класса) А там как уж назовете. Пользователей пока создавать нельзя. Причем по-моему даже вордпресс еще этого не поддерживает. Но в будущем вполне возможно это будет.
Май 21st, 2009 at 09:43
Не уверен, но вроде бы в нынешней версии постера автор задается не как wp_post->setAuthorId(id), а $post->setAuthorId(id). Но это мелочи. А можно ли создавать пользователей также как и посты?
Май 21st, 2009 at 07:07
C ошибкой разобрался, но постить всё равно не получается – приходит такой ответ:
Error #-32300: transport error – HTTP status code was not 200
Из-за чего это может быть?