XML-RPC wordpress-Posts

 XML-RPC WordPress APIを使用すると、HTMLのPOSTを使用してWordPressとのやりとりを行うことができます。XML-RPC WordPressにはいくつか決まった命令がありますので、それらの命令の使い方についてここにまとめておきます。

Posts

 記事の取得・作成・編集・削除をXML-RPCで行うことができます。下記のページに命令の一覧と解説があるので参考にするといいでしょう。

XML-RPC WordPress API – Posts –

命令の一覧は以下の通りです。

  1. wp.getPost
  2. wp.getPosts
  3. wp.newPost
  4. wp.editPost
  5. wp.deletePost
  6. wp.getPostType
  7. wp.getPostTypes
  8. wp.getPostFormats
  9. wp.getPostStatusList

ここでは、いくつかに焦点をあてて解説します。

wp.getPost, wp.getPosts (記事の取得)

 wp.getPostは指定した記事の情報を取得します。wp.getPostsは複数の記事情報を取得します。

wp.getPost

 wp.getPostにより指定した記事情報を取得できます。「xmlrpc.php」へ送信する情報は以下の通りです。

<methodCall>
	<methodName>wp.getPost</methodName>
	<params>
		<param><value><int>blog_id</int></value></param>
		<param><value><string>username</string></value></param>
		<param><value><string>password</string></value></param>
		<param><value><int>post_id</int></value></param>
		<param>
			<array>
				<data>
					<value>post_id</value>
					<value>post_title</value>
				</data>
			</array>
		</param>
	</params>
</methodCall>

タブや改行は見やすさのために書いていますが、データ数が増えるので実際には入れないほうがいいでしょう。まず、命令がwp.getPostであることは

<methodName>wp.getPost</methodName>

で指定します。そして、入力内容の意味は以下のとおりです。

  1. blog_id:ブログID、通常は1です。
  2. username:ブログにログインする際のID、デフォルトならadminだと思います。
  3. password:ブログにログインする際のパスワード
  4. post_id:取得する際の記事のID。記事編集の際のURLを見るとわかります。

その後にあるarrayでは、post_idやpost_titleといった取得した情報のメタフィールドを羅列します。

 命令がうまくいくと以下のようなデータ(メタフィールド)が返されます。

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse><params>
	<param><value>
		<struct>
			<member><name>post_id</name><value><string>1</string></value></member>
			<member><name>post_title</name><value><string>記事のタイトル</string></value></member>
		</struct>
	</value></param>
</params></methodResponse>

ここではpost_idとpost_titleを取得してあります。structとして情報が羅列してあります。あとはこれらの情報をパース(タグの解析と抽出)して、ほしい情報を取得しましょう。以下にメタフィールドの一覧を示します。抽出したいものを探して使いましょう。

メタフィールド データ型 意味
post_id string 記事ID
post_title string 記事のタイトル
post_data datetime 記事公開の日付
post_date_gmt datetime 記事公開の日付(GMT)
post_modified datetime 記事最終修正の日付
post_modified_gmt datetime 記事最終修正の日付(GMT)
post_status string

 記事の状態

  1. publish:投稿済み
  2. pending:レビュー待ち
  3. draft:下書き
  4. auto-draft:コンテンツなしの下書き
  5. future:将来投稿する
  6. private:ログインしていない人は見れない記事
  7. inherit:
  8. trash:ゴミ箱の中
post_type string

 投稿タイプ

  • post:投稿
  • page:固定ページ
  • attachment:添付ファイル
  • revision:リビジョン
  • nav_menu_item:ナビゲーション・メニュー
post_format string

 投稿フォーマット

  1. aside:アサイド
  2. gallery:ギャラリー
  3. image:画像
  4. link:リンク
  5. quote:引用
  6. status:ステータス
  7. video:動画
  8. audio:音声
  9. chat:チャット
post_name string  記事のスラッグ名
post_author string 著者ID
post_password string 記事閲覧のパスワード
post_excerpt string 記事の抜粋
post_content string 記事の内容
post_parent string  親ページのスラッグ
post_mime_type string
link string
guid string
menu_order int
comment_status string
ping_status string
sticky bool  先頭固定表示するかどうか
post_thumbnail struct サムネイルの情報(詳細)
terms array タームの情報(詳細)

wp.getPosts

 複数の記事情報を取得する命令です。以下のように入力します。

<methodCall>
	<methodName>wp.getPosts</methodName>
	<params>
		<param><value><int>blog_id</int></value></param>
		<param><value><string>username</string></value></param>
		<param><value><string>password</string></value></param>
		<param><value>
			<struct>
				<member><name>post_type</name><value><string>XXX</string></value></member>
				<member><name>post_status</name><value><string>XXX</string></value></member>
				<member><name>offset</name><value><int>XXX</int></value></member>
				<member><name>number</name><value><int>XXX</int></value></member>
				<member><name>orderby</name><value><string>XXX</string></value></member>
				<member><name>order</name><value><string>XXX</string></value></member>
			</struct>
		</value></param>
		<param>
			<array>
				<data>
					<value>post_id</value>
					<value>post_title</value>
				</data>
			</array>
		</param>
	</params>
</methodCall>

パラメータの意味は以下の通りです。

  1. blog_id:ブログID、通常は1です。
  2. username:ブログにログインする際のID、デフォルトならadminだと思います。
  3. password:ブログにログインする際のパスワード

password以降にあるstructの部分は任意なのであってもなくてもいいです。この部分では記事を取得する際の条件を設定できます。意味は以下の通りです。

  1. post_type:取得する記事の種類
  2. post_status:取得する記事の状態
  3. number:取得する記事の数
  4. offset:取得開始の位置を指定します。デフォルトは0です。追加で読み込みたいときに使用するといいでしょう。
  5. orderby:並び順(ASC:昇順,DESC:降順)
  6. order:並び順の基準(date:日付順, modified:修正日順, category:カテゴリー順, title:タイトル順, ID:ID順, comment_count:コメント数順, author:投稿者ID順, rand:ランダム, parent:親ページのID順, menu_order:ページ属性で指定した順, meta_value_num:カスタムフィールドで入力された値の順, none:指定なし)

この次にあるarrayも任意です。ここではpost_idやpost_titleなどの取得する情報を指定します。ないとすべての情報が返ってきます。

 うまく命令が通ると以下のような情報を返します。

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse><params>
	<param><value>
		<array><data>
			<value>
				<struct>
					<member><name>post_id</name><value><string>1</string></value></member>
					<member><name>post_title</name><value><string>1番目の記事のタイトル</string></value></member>
				</struct>
			</value>
			<value>
				<struct>
					<member><name>post_id</name><value><string>2</string></value></member>
					<member><name>post_title</name><value><string>2番目の記事のタイトル</string></value></member>
				</struct></value>
		</data></array>
	</value></param>
</params></methodResponse>

基本的にwp.getPostで返す情報がarray形式で出てくるだけです。この場合、2つの記事におけるpost_idとpost_titleについて情報を取得しています。

wp.newPost, wp.editPost (記事の新規作成,編集)

 新規に記事を作成したり、記事の上書きをする際に使用する命令です。

wp.newPost

 新規に記事を作成する際に使用する命令です。例えば、以下のように使用します。

<methodCall>
	<methodName>wp.newPost</methodName>
	<params>
		<param><value><int>blog_id</int></value></param>
		<param><value><string>username</string></value></param>
		<param><value><string>password</string></value></param>
		<param><value>
			<struct>
				<member><name>post_type</name><value><string>XXX</string></value></member>
				<member><name>post_status</name><value><string>XXX</string></value></member>
				<member><name>offset</name><value><int>XXX</int></value></member>
				<member><name>number</name><value><int>XXX</int></value></member>
				<member><name>orderby</name><value><string>XXX</string></value></member>
				<member><name>order</name><value><string>XXX</string></value></member>
			</struct>
		</value></param>
		<param>
			<array>
				<data>
					<value>post_id</value>
					<value>post_title</value>
				</data>
			</array>
		</param>
	</params>
</methodCall>

入力するパラメタは以下の通りです。

  1. blog_id:ブログID、通常は1です。
  2. username:ブログにログインする際のID、デフォルトならadminだと思います。
  3. password:ブログにログインする際のパスワード

struct型のcontentでは記事の具体的な内容を記述します。意味は以下の通りです。

メタフィールド データ型 意味
post_type string 投稿タイプ
post_status string  記事の状態
post_title string タイトル
post_author int 著者ID番号
post_excerpt string 抜粋
post_content string 記事の内容(html,<や>は&lt;や&gt;に変更しておくこと)
post_date_gmt | post_date datetime 投稿日時
post_format string  投稿フォーマット
post_name string スラッグ(URLの値)
post_password string 記事閲覧パスワード
comment_status string
ping_status string
sticky int  先頭に表示するかどうかの設定
post_thumbnail int  サムネイルの設定
post_parent int  親のID
custom_fields array カスタムフィールドの設定
terms struct カテゴリなどのタームの設定
terms_name struct
enclosure struct

成功するとtrueを返します。

wp.editPost

 すでに存在する記事について上書き保存するのに使用する命令です。例えば、以下のようにして使用します。

<methodCall>
	<methodName>wp.editPost</methodName>
	<params>
		<param><value><int>blog_id</int></value></param>
		<param><value><string>username</string></value></param>
		<param><value><string>password</string></value></param>
		<param><value><int>post_id</int></value></param>
		<param><value>
			<struct>
				<member><name>post_type</name><value><string>XXX</string></value></member>
				<member><name>post_status</name><value><string>XXX</string></value></member>
				<member><name>offset</name><value><int>XXX</int></value></member>
				<member><name>number</name><value><int>XXX</int></value></member>
				<member><name>orderby</name><value><string>XXX</string></value></member>
				<member><name>order</name><value><string>XXX</string></value></member>
			</struct>
		</value></param>
		<param>
			<array>
				<data>
					<value>post_id</value>
					<value>post_title</value>
				</data>
			</array>
		</param>
	</params>
</methodCall>

wp.newPostのpasswordの下にpost_idが加わっただけです。成功するとtrueを返します。

wp.deletePost (記事の削除)

 記事の削除をする際に使用します。例えば、以下の用に使用します。

<methodCall>
	<methodName>wp.deletePost</methodName>
	<params>
		<param><value><int>blog_id</int></value></param>
		<param><value><string>username</string></value></param>
		<param><value><string>password</string></value></param>
		<param><value><int>post_id</int></value></param>
	</params>
</methodCall>

成功するとtrueを返します。

著者:安井 真人(やすい まさと)