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) && 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%
Похожие записи:
Коммментариев нет | Теги: php, WordPress, Программирование