Categories
SugiBlog ホームページ制作・システム開発

XML-RPC WordPress APIで記事を投稿

The Incutio XML-RPC Library for PHP
http://scripts.incutio.com/xmlrpc/
「Download the Library」をクリックしダウンロードします。

解凍すると「php-ixr-1.7.4」というフォルダーに「IXR_Library.php」というファイルがありますので
このファイルをインクルードするだけです

ライブラリをインクルード

include_once("php-ixr-1.7.4/IXR_Library.php");

投稿先アドレスを引数としてインスタンスを生成します。

$client = new IXR_Client("http://www.example.jp/xmlrpc.php");

WordPressのユーザー名とパスワードを設定します。

$wp_username = "username";
$wp_password = "password";

投稿の処理

$status = $client->query(
    "wp.newPost", //使うAPIを指定(wp.newPostは、新規投稿)
    1,            //ブログID 通常は1、マルチサイトの場合は変更が必要
    $wp_username, //ユーザー名
    $wp_password, //パスワード
    array(
        "post_author" => 1,                        //投稿者ID 未指定の場合、投稿者名なしになります
        "post_status" => "publish",                //投稿状態
        "post_title" => "テスト投稿です。",        //タイトル
        "post_content" => "テスト投稿本文です。",  //本文
        "terms" => array("category" => array(1)),  //カテゴリ
    )
);

if(!$status){
    die("エラー! - ".$client->getErrorCode()." : ".$client->getErrorMessage());
} else { 
    $post_id = $client->getResponse(); //返り値は投稿ID
}


予約投稿とする場合はqueryメソッドの第5引数の配列に以下を追加します。

"post_date" => $postDate,

$postDateは以下のように作成します。

$postDate = new IXR_Date(time() + 60 * 60);

併せてpost_statusfutureとします。

タグを追加する場合はqueryメソッドの第5引数の配列に以下を追加します。

"terms_names" => array("post_tag" => array("タグ1", "タグ2")),

アイキャッチ画像を登録することもできます。

$imgInfo = getimagesize("test.jpg");
$type    = $imgInfo["mime"];

$bits = new IXR_Base64(file_get_contents("test.jpg"));
$status2 = $client->query(
    "wp.uploadFile",
    1,
    $wp_username,
    $wp_password,
    array(
        "name" => "test.jpg",
        "type" => $type,
        "bits" => $bits,
        "overwrite" => false,
        "post_id" => $post_id
    )
);
$img = $client->getResponse();

ここまでで画像自体の登録は完了ですが、投稿に対するアイキャッチ画像として登録してやる必要があります。

$status3 = $client->query(
    "wp.editPost",
    1,
    $wp_username,
    $wp_password,
    $post_id,
    array("post_thumbnail" => $img["id"])
);
$thumb = $client->getResponse();

参考URL:
http://nekoriki.net/45
http://nekoriki.net/47
http://nekoriki.net/50

XML-RPC WordPress API 公式リファレンス
http://wpdocs.osdn.jp/XML-RPC_WordPress_API

631 views

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*