カスタム投稿(ACF)のWP REST APIで更新する方法

WordPressのカスタム投稿プラグイン(Advanced Custom Fields:略ACF)を利用したサイトを構築したときにWP REST APIで値を更新する方法をメモしておきます。

 

目次

■必要なもの

・ACF to REST APIプラグイン(https://ja.wordpress.org/plugins/acf-to-rest-api/

※ACFはインストール済みとします。あと、WP REST APIの認証部分も省略します。

 

■設定すること

function.phpに下記の2行を入れてREST APIの時の設定を表示させます。

	// Enable the option show in rest
	add_filter( 'acf/rest_api/field_settings/show_in_rest', '__return_true' );

	// Enable the option edit in rest
	add_filter( 'acf/rest_api/field_settings/edit_in_rest', '__return_true' );

 

そうするとカスタムフィールド設定に下記の2つの設定ボタンを表示されます。見ての通りなので、両方とも「はい」にします。

 

■どうやって値を入れるのか?

まず、このページを読まないと進みません。

 

エンドポイントとして

投稿の場合は下記のようなものが用意されています。

/wp-json/acf/v3/posts/{id}
/wp-json/acf/v3/posts/{id}/{field-name}

 

更新するにあたっては「fields[‘カスタムフィールドで指定した名前’]」にすれば更新できます。

え?更新?更新しかないようで、新規に値を入れることはできないようです。

 

API流れとして、

・ページ(記事)を作成する

・カスタムフィールドの値を更新する

となります。

 

じゃあ、リピートフィールドは?ACFの中で便利な機能です。

 

下記のような形で更新できます。

                    "fields[repeattext]":[
                        {
                            "itemname":"1234",
                        },
                        {
                            "itemname":"あいうえお",
                        }
                    ],

 

えーそうなんですよ、更新なので記述が無いものは削除されます。

 

なんか履歴を追加していきたい!!って思った場合は全件取得して全件ぶっこむようになるのでしょう。。。

 

 

今回は、商品に対して、価格の履歴をACFのリピートフィールドで入れたいなって思っていたのでどうしようかな…

 

 

2021/12/29追記

□ACFの値を登録する方法

公式サイトの記事(https://www.advancedcustomfields.com/resources/wp-rest-api-integration/)によると「Advanced Custom Fields Pro」のversion5.11以降ならこのプラグインだけで値の登録等ができるとのこと。

 

さっそくやってみた。「ACF toREST API」は無効化。代わりに「Advanced Custom Fields Pro」を有効化。

 

今回やりたかったのがユーザーにカスタムフィールドを追加してそこに値を入れたかったのでそのようなものを作ってみた

カスタムフィールドを作り、設定欄のアクティブとShow in REST APIをはいにする

 

「Show in REST API」を「はい」にしないとその項目は登録できないみたいなので注意が必要。

 

項目の指定方法は

"acf": {
	"bikou": "テスト",
}

ACFの配下にフィールド名と値を記述する

 

これでAPIで項目の格納が可能になった。