質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.06%

【WP】WP REST APIを使用して、Advanced Custom Fields(カスタムフィールド)のアドオンThe Repeater Field(リピーターフィールド)から情報を取得する方法

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 2,661

tanaka_o

score 9

◆使用プラグイン
・Custom Post Type UI(カスタム投稿)
・Advanced Custom Fields(カスタムフィールド)
・The Repeater Field(リピーターフィールド)

◆出来ないこと
WP REST APIを使用して、リピーターフィールドの情報をJSON形式で取得したいのですが、
取得できませんでした。
リピーターフィールドを使用していないカスタムフィールドは問題なく取得できるので、
リピータフィールドを取得する記述が間違っているのだと考えられます。
わかる方いましたら教えてほしいです。

◆やりたい事
「slide_image」というカスタムフィールドの情報をWP REST APIでJSON形式で返ってくるようにしたいです。


◆カスタム投稿の設定 
投稿タイプスラッグ 「photo」

◆カスタムフィールドの設定

フィールド名
slide_images
フィールドタイプ
Repeater

└     サブフィールド名
└     slide_image
└     フィールドタイプ
└     image

└     サブフィールド名
└     slide_caption
└     フィールドタイプ
└     text

◆記述したプログラム

add_action( 'rest_api_init', 'slug_register_onsen' );
function slug_register_onsen() {
    register_rest_field( 'photo',
        'data', 
        array(
            'get_callback'  => function(  $object, $field_name, $request  ) {
             $meta_fields = array(
                'slide_images',
                'slide_image',
                'slide_caption'
              );
              $meta = array();
              foreach ( $meta_fields as $field ) {
                $meta[ $field ] = get_post_meta( $object[ 'id' ], $field, true );
              }
              return $meta;
            },
            'update_callback' => null,
            'schema'          => null,
        )
    );
}

◆アクセスしたリンク
https://example.jp/wp-json/wp/v2/photo

◆JSON形式で返された結果

[
    {
        "id": 355,
        "date": "2018-09-28T17:50:18",
        "date_gmt": "2018-09-28T08:50:18",
        "guid": {
            "rendered": "https://example.jp/?post_type=photo&p=355"
        },
        "modified": "2018-10-04T17:28:52",
        "modified_gmt": "2018-10-04T08:28:52",
        "slug": "%e6%96%87%e5%ad%97%e6%95%b0%e7%a2%ba%e8%aa%8d%e6%96%87%e5%ad%97%e6%95%b0%e7%a2%ba%e8%aa%8d%e6%96%87%e5%ad%97%e6%95%b0%e7%a2%ba%e8%aa%8d%e6%96%87%e5%ad%97%e6%95%b0%e7%a2%ba%e8%aa%8d%e6%96%87%e5%ad%97",
        "status": "publish",
        "type": "photo",
        "link": "https://example.jp/photo/%e6%96%87%e5%ad%97%e6%95%b0%e7%a2%ba%e8%aa%8d%e6%96%87%e5%ad%97%e6%95%b0%e7%a2%ba%e8%aa%8d%e6%96%87%e5%ad%97%e6%95%b0%e7%a2%ba%e8%aa%8d%e6%96%87%e5%ad%97%e6%95%b0%e7%a2%ba%e8%aa%8d%e6%96%87%e5%ad%97/",
        "title": {
            "rendered": "文字数確認文字数確認文字数確認文字数確認文字数確認文字数確"
        },
        "template": "",
        "data": {
            "slide_images": "1",
            "slide_image": "",
            "slide_caption": ""
        },
        "_links": {
            "self": [
                {
                    "href": "https://example.jp/wp-json/wp/v2/photo/355"
                }
            ],
            "collection": [
                {
                    "href": "https://example.jp/wp-json/wp/v2/photo"
                }
            ],
            "about": [
                {
                    "href": "https://example.jp/wp-json/wp/v2/types/photo"
                }
            ],
            "wp:attachment": [
                {
                    "href": "https://example.jp/wp-json/wp/v2/media?parent=355"
                }
            ],
            "curies": [
                {
                    "name": "wp",
                    "href": "https://api.w.org/{rel}",
                    "templated": true
                }
            ]
        }
    }
]
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • CHERRY

    2018/10/04 22:35 編集

    WordPress 標準ではない ACF のカスタムフィールドの取得には、ACF to REST APIプラグイン ( https://ja.wordpress.org/plugins/acf-to-rest-api/ )が必要だったと思いますが、このプラグインは、インストールされていますか?

    キャンセル

  • tanaka_o

    2018/10/05 10:13

    ありがとうございます!ACF to REST APIを導入したら解決できました!

    キャンセル

回答 2

check解決した方法

0

ACF to REST API(https://ja.wordpress.org/plugins/acf-to-rest-api/ )を導入したらリピーターフィールドから情報を取得することが出来ました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

こちらで自己解決しました!

val.acf.item_name

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.06%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • APIに関する質問
  • 【WP】WP REST APIを使用して、Advanced Custom Fields(カスタムフィールド)のアドオンThe Repeater Field(リピーターフィールド)から情報を取得する方法