XML-RPCを使って指定したアカウントで管理可能なサイト情報を取得する wp.getUsersBlogs


[XML-RPC による WordPress への投稿 関連記事]

今回は XML-RPC を使って、指定したアカウントで管理可能なサイト情報を取得する。そのXML-RPC メソッドは’wp.getUsersBlogs‘ であり、そのメソッドの使い方を調べたのでメモる。

※XML-RPC の基本的な使い方は “XML-RPCリクエストをWordPressに送信してレスポンスを受け取る“ 参照。
※サンプルでは”The Incutio XML-RPC Library for PHP” を使う。

wp_027

パラメータ

* @param array $args
*  Method parameters. Contains:
*  - username
*  - password

パラメータは配列で渡す。特に連想配列である必要はなく、第1要素がユーザ名、第2要素がパスワードとして判断される。

レスポンス

* @return array.
* Contains:
*  - ‘isAdmin’
*  - ‘url’
*  - ‘blogid’
*  - ‘blogName’
*  - ‘xmlrpc’ – url of xmlrpc endpoint

連想配列で返ってくる。マルチサイトの場合は、そのアカウントでアクセス可能な全てのサイトを取得する。

  • isAdmin : 管理者権限があるかどうか
  • url : サイトのURL
  • blogid :サイトごとにシステムが付与するID
  • blogName : サイト名
  • xmlrpc : XML-RPCリクエスト送信先

wp_028

サンプル
<?php
require_once("IXR_Library.php");

$server_url = 'http://localhost/WP/xmlrpc.php';
$client = new IXR_Client($server_url);

header("Content-type: text/html; charset=utf-8");

if (!$client->query('wp.getUsersBlogs' , array('username','password'))) {
    die('Something went wrong - '.$client->getErrorCode().' : '.$client->getErrorMessage());
}
else{
    echo '<pre>';
    var_dump($client->getResponse());
    echo '</pre>';
}
  • 2行目で”The Incutio XML-RPC Library for PHP” ライブラリを読み込む。
  • 4行目でXML-RPCリクエスト送信先を指定する。
  • 9行目で’wp.getUsersBlogs’ メソッドを実行するように指定する。
    パラメータに配列でユーザ名、パスワードを指定する。
  • 14行目でレスポンスを表示。

正常に処理が実行できたら、画面には次のような結果が表示される。

array(2) {
  [0]=>
  array(5) {
    ["isAdmin"]=>
    bool(true)
    ["url"]=>
    string(20) "http://localhost/WP/"
    ["blogid"]=>
    string(1) "1"
    ["blogName"]=>
    string(21) "サイト構築日記"
    ["xmlrpc"]=>
    string(30) "http://localhost/WP/xmlrpc.php"
  }
  [1]=>
  array(5) {
    ["isAdmin"]=>
    bool(true)
    ["url"]=>
    string(36) "http://localhost/WP/wordpress/"
    ["blogid"]=>
    string(1) "3"
    ["blogName"]=>
    string(37) "サイト構築日記(WordPress編)"
    ["xmlrpc"]=>
    string(46) "http://localhost/WP/wordpress/xmlrpc.php"
  }
}
参考


[XML-RPC による WordPress への投稿 関連記事]

コメントを残す

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