:-)
  • PHP 09.12.2008

    wp-poster
    Внимание! Этот пост устарел, новую информацию по классу смотреть тут:Апдейт класса wp-poster.

    Публикую класс для работы с WordPress через XML-RPC. На самом деле я не работаю с XML-RPC напрямую, более того, так не делает даже сам Вордпресс. Мы вместе с Вордпрессом используем класс IXR_Client. Существует множество разных API для постинга в блоги, такие как WordPress API , Blogger API, MetaWeblog API, MovableType API. В общем мой класс это реализация шаблона Фасад для упрощения использования этих API.

    Эта версия - глубокая альфа, однако, она вполне рабочая. Что будет с ней дальше - фиг знает. Мне могут дать на работе задание совершенно не связанное с Вордпрессом и все, я уже не буду успевать работать над классом. Но пока все идет хорошо)

    Сам класс можно скачать вот тут: wp-poster.zip. В комплекте идет требуемый 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!</ВАЖНО>, так же категории не создаются автоматически, это не баг, это фича. Я позже сделаю мануал где опишу как создавать категории. (Это уже можно делать, если хотите поковыряйте код моего класса). Так же обратите внимание, что категории идут массивом, а теги строкой.

    А еще я писал про:

    1. Апдейт класса wp-poster
    2. Публикуем в блог на wordpress через XML-RPC
    3. Постим в WordPress через XML-RPC ч.2. Категории, теги.

    Tags: , , ,

  • 29 комментариев

    WP_Modern_Notepad
    • Snowcore пишет:

      Щас скачаем, посмотрим твое творение…

    • Snowcore пишет:

      Красиво написано, мне понравилось.
      P.S.: Особенно понравилось: «Link me and do what the fuck you want. I’m not responsible for anything»
      Жесть! :-D

    • CharnaD пишет:

      Эт не я придумал) Вроде на хабре в каментах где-то было про «do what the fuck you want», я чуть добавил только)

    • HAGEN пишет:

      Давно хотел сделать постинг через xml-rpc, но честно говоря влом было разибраться. А тут уже готовый класс. Спасибо :)

    • Filosoff пишет:

      огромное спасибо за проделанную работу. собственно говоря, вот – p2wp. существует уже несколько месяцев, сделан с помощью нескольких костылей, бутылки пива и соответствующей матери. может объединим усилия и создадим прекрасное? :)

    • Дмитрий пишет:

      А дату публикации можно передать? Судя по всему аргумент «dateCreated» IXR не понимает…

    • CharnaD пишет:

      Так, посмотрю сейчас.

      Блоггер постит так:
      $post_date = current_time(‘mysql’);
      $post_date_gmt = current_time(‘mysql’, 1);

      а вот metaWeblog поддерживает дату публикации.

      if ( !empty( $content_struct['date_created_gmt'] ) ) { …

      Но думается мне, что надо туда посылать не просто дату, а объект IXR_Date

    • Дмитрий пишет:

      Ага, точно! Нужно объект отправлять, а я решил, что ему надо дату в ISO…

    • Oleg пишет:

      Ваш скрипт выдает «яЛП» при постинге что бы это могло значить? Кодировка поста UTF-8, посты при этом не постятся(

    • Oleg пишет:

      Попробовал постить как описано здесь http://www.charnad.com/blog/publikuem-v-blog-na-wordpress-cherez-xml-rpc/
      все работает, через ваш класс выдает только те символы(.

    • HAGEN пишет:

      2Oleg
      Чтобы постилось нужно published выставить в единицу. При нуле посты идут в черновики.
      Для корректного постинга в UTF-8 нужно перекодировать строки в UTF-8, т.е. или сохранить скрипт в этой кодировке или с помощью iconv:
      $str = iconv(«cp1251″, «UTF-8″, «Пора переходить на юникод.»);

    • CharnaD пишет:

      Да. Надо бы написать мануал, чтобы обьяснить что и как..

    • greeL пишет:

      Подскажите как реализовать отложенный постинг? ковырял предложенный скрипт и ixr_client.php, постит только по текущей дате…

    • greeL пишет:

      Извините, понял сам)
      Спасибо класс, очень пригодился)

    • CharnaD пишет:

      Всегда пожалуйста. Класс будет обновляться, так что заглядывайте иногда за изменениями)

      Правда происходить это будет очень медленно, т.к. работа и учеба.

    • green пишет:

      А как получить урл записи которую запостили?

    • CharnaD пишет:

      Функция возвращает ID записи. Должно быть site.com/?p=id

    • green пишет:

      Возвращает «OK»
      $res = $poster->post($blog, $post);
      $res :
      Array
      (
      [0] => OK
      )

    • CharnaD пишет:

      Ааа.. ОК это значит хорошо) Вы там смотрите, published = 0. Это значит кладется в черновики. Измените на 1 и будет публиковаться сразу.

    • green пишет:

      поставил $content_struct['published'] = 1; публикуется, но всё равно возвращает только «ОК» )

    • Юрий пишет:

      Афигеть! Работает! Неделю искал что-то подобное и работающее! Спасибо большое:)

    • Вадим пишет:

      А подскажите – как сделать отложенную публикацию?:)

    • CharnaD пишет:

      Создайте экземпляр класс IXR_Date и передайте его в качестве параметра. Название параметра ‘date_created_gmt’ или ‘dateCreated’. Соответственно дата по GMT и, видимо, локальное время. Достаточно передать 1 параметр. Когда руки дойдут я сделаю удобный постинг, но работа, учеба..

    • Вадим пишет:

      Спасибо, хоть и мало понятно для такого чайника как я. Хотя моих знаний паскаля хватило чтобы разобраться с твоей программой и даже слегка ее модифицировать под себя:)

    • humbert пишет:

      А как скачать? Пишет 404 Not Found

    • CharnaD пишет:

      А, это после переезда забыл закачать. Теперь все ок.

    • humbert пишет:

      Спасибо большое, отличный класс, еще бы побольше возможностей, как то список рубрик с их именами и id

      http://humbert.ru/2009/03/27/postim-udalenno-v-wordpress/ – отписал про класс

    • humbert пишет:

      Хочу при создании топика в блоге поменять даты, например, set_date_created_gmt – формат даты какой ставить?

    • humbert пишет:

      А, разобрался, отключил проверку
      //if (strlen($value) > 0)
      и написал
      $post->set_dateCreated(new IXR_Date($datecreate));

    Trackbacks