サポート » プラグイン » カスタムフィールドの内容をJSON REST APIで表示する

  • 解決済モデレーター Okamoto Hidetaka

    (@hideokamoto)



    JSON REST APIを使って、投稿データをJSON形式で取得したいと思います。
    通常の投稿については問題なく「/wp-json/posts/」で取得できるのですが、
    All in one SEO Pack やfunctions.phpに追加したカスタムフィールドの内容が表示されません。

    MySQLから投稿データを取得してきているのではないかと思うのですが、
    そこにカスタムフィールドのデータを追加する必要があるということになりますでしょうか?

    ご教授よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • Kite

    (@ixkaito)

    セキュリティの懸念で、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’ は対応するカスタムフィールド名に変更してください。あとは取得するカスタムフィールドの数によって追加/削除してください。

    モデレーター Okamoto Hidetaka

    (@hideokamoto)

    ありがとうございます!
    フックを使って独自に追加する必要があるということですね。

    プラグイン化させた方が拡張性が高そうですので、
    実装させる際にはプラグインとして使えるようにしてみたいと思いますm(_ _)m

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタムフィールドの内容をJSON REST APIで表示する」には新たに返信することはできません。