Edited at

WP-APIのスキーマにカスタムフィールドを追加する

More than 3 years have passed since last update.

WP-APIでは、デフォルトではカスタムフィールドは出力されません。

なぜかというとサードパーティのプラグインがいつの間にかセキュリティ的に重要な情報を出力している可能性があるからなんですよね。

ただし、カスタムフィールドを出力するプラグインを作るのはそれほど難しくありません。

<?php

/**
* Plugin Name: Add Meta to REST-API
* Author: Takayuki Miyauchi
* Description: Example plugin that adds post meta to rest-api.
*/

add_action( 'rest_api_init', function() {
register_rest_field(
'post', // post type
'post_meta', // rest-apiに追加するキー
array(
'get_callback' => function( $object, $field_name, $request ) {
// 出力したいカスタムフィールドのキーをここで定義
$meta_fields = array(
'color',
'price',
);
$meta = array();
foreach ( $meta_fields as $field ) {
// バリデーションを一切してないので注意
$meta[ $field ] = get_post_meta( $object[ 'id' ], $field, true );
}
return $meta;
},
'update_callback' => null,
'schema' => null,
)
);
} );

上のコードの中の以下の部分で出力したいカスタムフィールドを配列で指定しています。

$meta_fields = array(

'color',
'price',
);

これをプラグインとして有効化してREST APIのエンドポイントにアクセスすると以下のような感じでJSONが出力されていることが確認できると思います。

"post_meta": {

"color": "Red",
"price": "123000"
},

Pawというアプリで見るとこんな感じ。