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

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

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

4884閲覧

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

tanaka_o

総合スコア9

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2018/10/04 09:11

◆使用プラグイン
・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 } ] } } ]

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2018/10/04 13:43 編集

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

2018/10/05 01:13

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

回答2

0

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

val.acf.item_name

投稿2019/12/23 08:14

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

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

投稿2018/10/05 01:15

tanaka_o

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問