ワードプレスは、外部エディタからの入力にも対応しています。
PHPのプログラムから、新規投稿を行うシンプルな方法を紹介します。
この機能を利用するためには、管理パネルで、リモートパブリッシングの設定を行う必要があります。
writing settingでXML-RPCを許可してください。
やり方は、いろいろありますが、まずデベロッパの方は、
wp-includes/class-wp-xmlrpc-server.phpのコンストラクタのxmlrpc_methodsに目を通してください。
cURLを使う例
<?php $USERNAME= ""; $PASSWORD= ""; $BLOGID= 1; $BLOGURL= ""; $XMLRPC_URL= $BLOGURL."/xmlrpc.php"; function get_response($URL, $context) { if(!function_exists('curl_init')) { die ("Curl PHP package not installed\n"); } /*Initializing CURL*/ $curlHandle= curl_init(); /*The URL to be downloaded is set*/ curl_setopt($curlHandle, CURLOPT_URL, $URL); curl_setopt($curlHandle, CURLOPT_HEADER, false); curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array("Content-Type: text/xml")); curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $context); /*Now execute the CURL, download the URL specified*/ $response= curl_exec($curlHandle); return $response; } /*Creating the request */ $request= xmlrpc_encode_request("metaWeblog.newPost", array($BLOGID, $USERNAME, $PASSWORD ,array('description'=> '練習だよ','title'=>'ほらこれだよ'),1),array('escaping'=> "markup",'encode'=>'UTF-8') ) ; /*Making the request to wordpress XMLRPC of your blog*/ $xmlresponse= get_response($XMLRPC_URL, $request); $response= xmlrpc_decode($xmlresponse); if ($response && xmlrpc_is_fault($response)) { trigger_error("xmlrpc: $response[faultString] ($response[faultCode])"); } else { /*Printing the response on to the console*/ print_r($response); } echo "\n"; ?>
WordPressのclass-IXR.phpを利用して作る。xmlrpc クライアントの例
< ?php
require_once(“class-IXR.php”);
$host = “http://www.example.com/wp”;
$base_uri = $host. “/xmlrpc.php”;
$USER = ‘user’;
$PASS = ‘password’;
$client= new IXR_Client($base_uri);
if (!$client->query(‘wp.getCategories’,”, $USER,$PASS)){
echo(‘Error occured during category request.’ . $client->getErrorCode().”:”.$client->getErrorMessage());
}
$cats= $client->getResponse();
//取得したカテゴリから、エントリーに追加するカテゴリを探す処理
//var_dump( $cats );
?>< ?php $content['title']= 'Test title '; $content['categories']= $cats[0]; $content['description']= '
Lorem ipsum dolor sit amet’;
$content[‘custom_fields’]= array( array(‘key’=> ‘my_custom_fied’,’value’=>’yes’) );
/* tag */
$content[‘mt_keywords’]= array(‘foo’,’bar’);
if (!$client->query(‘metaWeblog.newPost’,”, $USER,$PASS, $content, true))
{
die( ‘Error while creating a new post’ . $client->getErrorCode() .” : “. $client->getErrorMessage());
}
$ID= $client->getResponse();
if($ID)
{
echo ‘Post published with ID:#’.$ID;
}
?>
slug を指定する
<?php require_once("./wp-includes/class-IXR.php"); $host = "http://"; $base_uri = $host . "/xmlrpc.php"; $USER = ''; $PASS = ''; $client= new IXR_Client( $base_uri ); if ( !$client->query( 'wp.getCategories', '', $USER, $PASS ) ) { echo( 'Error occured during category request.' . $client->getErrorCode() . ":" . $client->getErrorMessage() ); } $cats= $client->getResponse(); $content[ 'wp_slug' ] = 'hello-mytest'; $content[ 'title' ]= 'Test title '; $content[ 'categories' ] = $cats[ 0 ]; $content[ 'description' ] = '<p>Lorem ipsum dolor sit amet</p>'; $content[ 'custom_fields' ] = array( array( 'key'=> 'my_custom_fied', 'value'=> 'yes' ) ); $content[ 'mt_keywords' ] = array( 'foo', 'bar' ); if ( !$client->query( 'metaWeblog.newPost', '', $USER, $PASS, $content, true ) ) { die( 'Error while creating a new post' . $client->getErrorCode() . " : " . $client->getErrorMessage() ); } $ID= $client->getResponse(); if ( $ID ) { echo 'Post published with ID:#' . $ID; } ?>