セキュリティの懸念で、JSON REST API のデフォルトでは post_meta は認証されたユーザーにのみ許可されるようになりました。
未認証で post_meta を表示させたい場合は、json_prepare_post フィルターを使って、特定のカスタムフィールドを追加する必要があります。
下記コードを functions.php に追加、もしくはプラグイン化してください。
テーマに影響されないようプラグイン化した方がベターかもしれません。
function my_json_post_meta( $data, $post, $context ) {
$data['post_meta'] = array(
'a' => get_post_meta( $post['ID'], 'Custom Field A', true ),
'b' => get_post_meta( $post['ID'], 'Custom Field B', true )
);
return $data;
}
add_filter( 'json_prepare_post', 'my_json_post_meta', 10, 3 );
カスタムフィールドなので ‘post_meta’ にしていますが、’post_meta’, ‘a’, ‘b’ はお好きなものに変更可能です。’Custom Field A’, ‘Custom Field B’ は対応するカスタムフィールド名に変更してください。あとは取得するカスタムフィールドの数によって追加/削除してください。
トピック投稿者
hide
(@hideokamoto)
ありがとうございます!
フックを使って独自に追加する必要があるということですね。
プラグイン化させた方が拡張性が高そうですので、
実装させる際にはプラグインとして使えるようにしてみたいと思いますm(_ _)m