16.11.2009 01:38Публикация поста в WordPress с помощью XMLRPC с поддержкой All in One SEO Pack

Часто при создании блогов и сплогов встает задача их автоматического наполнения тем или иным контентом.

Я написал небольшую функцию автоматической публикации поста в блоге WordPress с использованием механизма XML-RPC. Вообще говоря, функций этих написано уже много, в чем легко можно убедиться погуглив эту тему, но всё же, фукнции, которая поддерживала бы передачу тегов keywords и description для плаггина «All in One SEO Pack» я не нашёл, поэтому пришлось разбираться самому. Ну и вот, что у меня получилось:


{code type=php}
function wpPostXMLRPC($title,$body,$rpcurl,$username,$password,$category
=array(),$tags=»,$keywords, $decription, $aiosptitle, $encoding=»UTF-8″)
{
//Get categories
$cats=array();
$params=array(0,$username,$password);
$request = xmlrpc_encode_request(‘metaWeblog.getCategories’,$params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_URL, $rpcurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
preg_match_all(‘/\\categoryName\<\/name\>\\
(\w+)\<\/string\>\<\/value\>\<\/member\>/’, $result, $matches,
PREG_SET_ORDER);
for ($i=0;$i {
array_push($cats,$matches[$i][1]);
}
//Find nonexistent categories
$diff=array_diff($category,$cats);
//Create nonexistent categories
if (!empty($diff) && strlen($diff[0]))
{
foreach ($diff as $cat)
{
$newcat=array('name' => $cat, 'slug' => strtolower($cat),
'description' =$cat.");
$params=array(0,$username,$password,$newcat);
$request = xmlrpc_encode_request('wp.newCategory',$params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_URL, $rpcurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_exec($ch);
curl_close($ch);
}
}
$title = htmlentities($title,ENT_NOQUOTES,$encoding);
$tags = htmlentities($tags,ENT_NOQUOTES,$encoding);
$content = array(
'title'=>$title,
'description'=>$body,
'mt_allow_comments'=>1, // 1 to allow comments
'mt_allow_pings'=>1, // 1 to allow trackbacks
'post_type'=>'post',
'mt_keywords'=>$tags,
'categories'=>$category,
'custom_fields' => array(
array( 'key' => '_aioseop_description', 'value' => $decription ),
array( 'key' => '_aioseop_keywords', 'value' => $keywords ),
array( 'key' => '_aioseop_title', 'value' => $aiosptitle )
),
);
$params = array(0,$username,$password,$content,true);
$request = xmlrpc_encode_request('metaWeblog.newPost',$params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_URL, $rpcurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$results = curl_exec($ch);
curl_close($ch);
return $results;
}
{/code}

Функцию нужно вызывать со следующими параметрами:

  • $title – название записи;
  • $body – тело поста;
  • $rpcurl – xmlrpc.php URL;
  • $username – имя пользователя (пользователь должен обладать правом публикации постов);
  • $password – пароль пользователя;
  • $category – массив с категориями записи;
  • $tags – теги для записи (разделенные запятой);
  • $keywords – ключевые слова (должен быть установлен плаггин «All In One SEO Pack»);
  • $decription – описание (должен быть установлен плаггин «All In One SEO Pack»);
  • $aiosptitle – заголовок записи (должен быть установлен плаггин «All In One SEO Pack»);
  • $encoding – кодировка (по умолчанию UTF-8);

В случае если тегов и категорий не существует они будут созданы автоматически.

Похожие записи:

  1. Как авторизоваться «ВКонтакте».
  2. JavaScript внутри поста.
  3. Безопасность WordPress.
  4. Как убрать даты комментариев в WordPress.
  5. Массовое редактирование комментариев WordPress

Комментариев нет | Теги: , ,



VKMail.ruFBTwitterDIUDiggReddit

Оставьте комментарий

Немного о себе




Также Вы можете войти используя: Вконтакте Facebook Twitter Google Blogger LiveJournal Last.fm MyOpenID OpenID

Комментарий

Это не спам.