Не знаю, многих ли интересует этот вопрос, но даже если и нет, едва ли это должно удержать меня от написания поста. Существует по крайней мере три способа автоматизировать создание новых записей в WordPress .
Способы эти следующие:
- Создание отложенных записей. Во время редактирования поста можно точно задать дату и время его публикации. На некоторых хостингах эта фишка может не сработать, но это легко лечится с помощью плагина Missed Scheduled . Удобно, например, если вы уезжаете в отпуск и за время своего отсутствия хотите опубликовать пару постов, но не более того.
- Импорт новых записей из RSS-лент. Сам по себе WordPress этого не умеет, но его можно «обучить», установив плагин FeedWordPress . Плагин можно использовать не только для создания сплогов, но и для вполне порядочных целей. Например, можно написать скрипт, генерирующий RSS-ленту с новыми записями и импортировать их. Можно также импортировать последние материалы с lenta.ru или блогов своих друзей и отображать где-нибудь ссылки — типа «события в мире» или «мои друзья пишут…». Хотя того же результата можно достичь с помощью виджета RSS и Yahoo Pipes.
- И последний вариант — использовать XMLRPC.
По-моему сегодня только ленивый не писал свой модуль для работы с XMLRPC, по крайней мере, судя по CPAN (кое-что о Perl и CPAN можно прочитать в моих уроках ). Мне почему-то больше всего понравился модуль WordPress::XMLRPC. Наверное из-за наличия слова WordPress в названии и потому что он есть в портах FreeBSD. Как любая программа, которая есть в портах, WordPress::XMLRPC устанавливается очень просто:
Но есть нюанс ©. Скрипт, использующий WordPress::XMLRPC, может завершится с такой ошибкой:
Я, честно говоря, не знаю что это за модуль LEOCHARRE::Debug и почему он не был установлен. Может быть, имела место ошибка в портах или perl нужно обновить, но если вы столкнулись с такой же проблемой, то решить ее можно просто закомментировав 5-ю строку в файле /usr/local/lib/perl5/site_perl/5.8.9/WordPress/XMLRPC.pm
use warnings ;
use strict ;
use Carp ;
# use LEOCHARRE::Debug;
use vars qw ( $VERSION $DEBUG ) ;
$VERSION = sprintf «%d.%02d» , q $Revision : 1.23 $ =~ /(d+)/g ;
А вот собственно и пример скрипта, создающего новую запись в блоге с поддержкой XMLRPC. В WordPress эта поддержка активируется на странице Параметры → Написание → Удалённая публикация.
use WordPress :: XMLRPC ;
my $rpc = WordPress :: XMLRPC -> new (
{
username => ‘admin’ ,
password => ‘qwerty’ ,
proxy => ‘http://example.ru/xmlrpc.php’ ,
} ) or die «Error (1) — $! n » ;
# если рубрики еще нет, ее нужно создать с помощью
# $rpc->newCategory({name => $category_name})
# а вот метки создаются автоматически
my $hpost = {
title => ‘Тестовая статья’ ,
# wp_slug => ‘testovaya-statya’,
# ^^^ не обязательно, особенно когда установлен Rus2Lat
categories => [ ‘Рубрика’ ] ,
description => ‘Привет, мир!<!—more—> Как твои дела сегодня?’ ,
mt_keywords => ‘Метка 1, Метка 2, Метка 3’ ,
} ;
$rpc -> newPost ( $hpost ) or die «Error (2) — $! n » ;
Как видите, все просто и понятно. Дополнительную информацию можно почерпнуть из «man WordPress::XMLRPC». А теперь давайте подумаем, какие возможности открывает перед нами автоматический постинг.
- Самое банальное — можно написать клиент для WordPress. Я правда такими никогда не пользовался, меня веб-интерфейс WP более чем устраивает.
- Можно настроить кросспостинг из ЖЖ или написать какой-нибудь мешап.
- Допустим, мы хотим перенести блог из какого-нибудь diary.ru на свой домен или сменить движок сайта на WordPress. С помощью автоматического постинга можно сделать и то и другое без необходимости изучать схему базы данных или какие-то форматы файлов.
- Можно написать бота для Блогуна или GoGetLinks. Главное — придумать, откуда брать уникальный контент (написать бота для Advego.ru?).
- Список ограничен лишь вашей фантазией.
Как видите, автопостинг — штука довольно занятная. Это все, что я хотел рассказать сегодня. Есть вопросы — буду рад ответить на них в комментариях. Чтобы не пропустить ничего интересного, не забудьте подписаться на RSS . Удачи!
Дополнение: Нагуглил аналогичный пример использования XMLRPC в Drupal .