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

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

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

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('/\<member\>\<name\>categoryName\<\/name\>\<value\>\<string\>
    (\w+)\<\/string\>\<\/value\>\<\/member\>/', $result, $matches,
    PREG_SET_ORDER);
    for ($i=0;$i<count($matches);$i++)
    {
        array_push($cats,$matches[$i][1]);
    }
    //Find nonexistent categories
    $diff=array_diff($category,$cats);
    //Create nonexistent  categories
    if (!empty($diff) &amp;&amp; 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;
}

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

  • $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);

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

Популярность: 85%

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

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

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

Реклама:

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

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




Комментарий

Я не робот