Автоматический постинг в WordPress
18 мая 2010
Не знаю, многих ли интересует этот вопрос, но даже если и нет, едва ли это должно удержать меня от написания поста. Существует по крайней мере три способа автоматизировать создание новых записей в 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.
Метки: Perl, WordPress, Сайтостроение.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.