[WordPress] REST APIでカスタムフィールドを取り出すプラグイン3選

外部システムからWordPressの投稿記事データを取り出すには、WordPress REST APIを使います。投稿記事データがJSONデータで返ってきます。しかし、カスタムフィールドはJSONデータに入っていないんですね。カスタムフィールドをJSONデータに含めて返すWordPressプラグインを調べました。

ACF to REST API

プラグインを追加、キーワード「REST API Custom Fields」で検索したら、1ページ目4番目以内に表示されました。

ACF to REST API
Exposes Advanced Custom Fields Endpoints in the WordPress REST API
airesvsg/acf-to-rest-api
Exposes Advanced Custom Fields Endpoints in the WordPress REST API - airesvsg/acf-to-rest-api

JSON出力

通常のREST APIのURL http://localhost/wp-json/wp/v2/posts/2 にリクエストすると、JSONの"content"や"title"と同じレベルの、"acf"キー下に、カスタムフィールドが出力されました。

アンダーバー始まりのカスタムフィールドは表示されません。

{ 省略 "content": { "rendered": "<p>なにか</p>", "protected": false }, 省略 "acf": { "my_text1": "xxxx" }, 省略 }

また、このプラグイン専用のREST URL http://localhost/wp-json/acf/v2/post/2 にリクエストすると、カスタムフィールドだけをJSON出力することができます。

{ "acf": { "my_text1": "xxxx" } }

設定

このプラグイン専用のREST URLは、v2とv3があります。

プラグイン「ACF to REST API」のSettingリンクをクリックすると、設定>パーマリンク設定の一番下に移動して、v2 や v3 を選択できます。

新規・編集

githubのREADMEのField Settingsの項目、Editing the fieldsの項目を見ると、このプラグインとAdvanced Custom Fieldsプラグインを使っている場合、REST APIにPOSTすることで、カスタムフィールドを新規追加、編集することができます。

REST API Custom Fields

プラグインを追加、キーワード「REST API Custom Fields」で検索したら、1ページ目2番目に表示されました。

REST API Custom Fields
This plugin enhances WordPress REST API v2 responses about metadata

JSON出力

通常のREST APIのURL http://localhost/wp-json/wp/v2/posts/2 にリクエストすると、JSONの"content"や"title"と同じレベルに、カスタムフィールドが出力されます。

設定ページで、カスタムフィールドごとに出力するしないを設定することができます。

{ 省略 "content": { "rendered": "<p>なにか</p>", "protected": false }, 省略 "_encloseme": "1", "_thumbnail_id": "", "_wp_desired_post_slug": "", "_wp_trash_meta_comments_status": "", "my_text2": "", "my_text2111": "", "_edit_last": "1", "_edit_lock": "1598748453:1", "_wp_trash_meta_status": "", "_wp_trash_meta_time": "", "my_text1": "xxxx"", "_my_text1": "field_5f4af58a0f382", 省略 }

設定

設定>Rest API Custom Fields を表示すると、Posts、Comments、Users、Termsのカスタムフィールド一覧が表示されます。チェックをつけたカスタムフィールドが、REST APIのJSONに出力されます。

プラグインのインストール直後は、チェックがついていないので、JSONに出力されません。

インストール直後、REST APIのJSONにカスタムフィールドがでてこないから、焦ったよ

設定で、表示したいカスタムフィールドにチェックをつけるのね

WP REST API POST/ PAGE CUSTOM FIELDS

プラグインを追加、キーワード「REST API Custom Fields」で検索すると、2ページ目11番目に表示されました。

WP REST API POST/ PAGE CUSTOM FIELDS
Adds Custom Field output to the WP REST API for posts, pages, users, and taxonomies.

JSON出力

JSONの"content"や"title"と同じレベルの、"metadata"キー下に、カスタムフィールドが出力されます。

"metadata"キー下は、get_post_meta($id)の戻り値です。

投稿、固定ページ、どちらも動作確認しました。ソースを見ると、投稿タイプpage、post、user、taxonomieに対応しているようです。

{ 省略 "content": { "rendered": "<p>なにか</p>", "protected": false }, 省略 "metadata": { "_encloseme": [ "1" ], "_edit_lock": [ "1598752509:1" ], "_edit_last": [ "1" ], "my_text1": [ "taro" ], "_my_text1": [ "field_5f4af58a0f382" ] }, 省略 }

機能は少ないかわりに、ソースは短いから、理解しやすいわね

WP REST API Custom Fields

プラグインを追加、キーワード「REST API Custom Fields」で検索すると、2ページ目19番目に表示されました。

WP REST API Custom Fields
Shows Advanced Custom Field output to the WP REST API for posts, pages, taxonomies and users.
andreboekhorst/wp-api-custom-fields
Adds meta fields to WP Rest JSON output. Contribute to andreboekhorst/wp-api-custom-fields development by creating an account on GitHub.

残念ながら、REST APIのJSONレスポンスに、カスタムフィールドはありませんでした。

しばらくアップデートされていないから、しかたないわね

タイトルとURLをコピーしました