XML-RPC wordpress-Posts
2015年3月30日:WordPress
XML-RPC WordPress APIを使用すると、HTMLのPOSTを使用してWordPressとのやりとりを行うことができます。XML-RPC WordPressにはいくつか決まった命令がありますので、それらの命令の使い方についてここにまとめておきます。
Posts
記事の取得・作成・編集・削除をXML-RPCで行うことができます。下記のページに命令の一覧と解説があるので参考にするといいでしょう。
XML-RPC WordPress API – Posts –
命令の一覧は以下の通りです。
- wp.getPost
- wp.getPosts
- wp.newPost
- wp.editPost
- wp.deletePost
- wp.getPostType
- wp.getPostTypes
- wp.getPostFormats
- 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>
で指定します。そして、入力内容の意味は以下のとおりです。
- blog_id:ブログID、通常は1です。
- username:ブログにログインする際のID、デフォルトならadminだと思います。
- password:ブログにログインする際のパスワード
- 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 |
記事の状態
|
post_type | string |
投稿タイプ
|
post_format | string |
投稿フォーマット
|
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>
パラメータの意味は以下の通りです。
- blog_id:ブログID、通常は1です。
- username:ブログにログインする際のID、デフォルトならadminだと思います。
- password:ブログにログインする際のパスワード
password以降にあるstructの部分は任意なのであってもなくてもいいです。この部分では記事を取得する際の条件を設定できます。意味は以下の通りです。
- post_type:取得する記事の種類
- post_status:取得する記事の状態
- number:取得する記事の数
- offset:取得開始の位置を指定します。デフォルトは0です。追加で読み込みたいときに使用するといいでしょう。
- orderby:並び順(ASC:昇順,DESC:降順)
- 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>
入力するパラメタは以下の通りです。
- blog_id:ブログID、通常は1です。
- username:ブログにログインする際のID、デフォルトならadminだと思います。
- password:ブログにログインする際のパスワード
struct型のcontentでは記事の具体的な内容を記述します。意味は以下の通りです。
メタフィールド | データ型 | 意味 |
---|---|---|
post_type | string | 投稿タイプ |
post_status | string | 記事の状態 |
post_title | string | タイトル |
post_author | int | 著者ID番号 |
post_excerpt | string | 抜粋 |
post_content | string | 記事の内容(html,<や>は<や>に変更しておくこと) |
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を返します。
著者:安井 真人(やすい まさと)
@yasui_masatoさんをフォロー