【Advance Custome Fields】ACFの設定情報の取得元は固定ページがおすすめかもしれない

2019年8月27日

ACF(Advanced Custome Fields)というカスタムフィールド系のプラグインがあります。

カスタムフィールドは、記事に+αの情報を持たせるもので、WordPressの機能としても搭載はされています。

で、そんなカスタムフィールド系のプラグインであるACFを使いますと、セレクトボックスやラジオボタンの情報を簡単に持たせることが出来ます。

例えば、以下はACFの設定画面ですが、都道府県をセレクトボックスで設定しています。

この設定の適用範囲を任意のページタイプ(固定ページや各投稿ページ等)に適用することで、
対象の記事で都道府県情報を持たせることが出来るというわけです。

ACF設定画面

で、ここからが本題ですが、ACF情報については専用の固定ページを作成しておくと便利かなと思います。

なぜかといいますと、

「現在の記事がACF情報を持っていない場合、非公開のACF用固定ページから情報を持ってきて、暫定的に表示させる」

という技が使えるからです。

方法

流れとしては、

  1. ACFの設定
  2. 固定ページの作成(非公開)
  3. get_field_object('フィールド名’,get_page_by_path['2で作成した固定ページスラグ’]->ID)で情報を取得

という流れです。

ACFの設定

以下のように設定します。

ACF設定画面

固定ページの作成

情報を取得する為の固定ページを設定します。
本文等は特に必要ありません。

  • 非公開設定
  • ACF情報を設定

という点だけ注意していればOKでしょう。

余談ですが、ACFのフィールド名を変更したりした場合等は、作成した固定ページの更新を忘れないようにしましょう。(新しく設定したACF情報で上書きするイメージ)

3.情報を取得

1で作成したACFのフィールド名は「Prefectures」です。

また、今回作成した固定ページのスラグは「prefecture-test」です。

ACFページのスラグ

したがって、以下のように記述すれば、先ほど作成した固定ページの情報が取得できます。

get_field_object('Prefectures',get_page_by_path['prefecture-test']->ID)

結果

3.の結果をprint_rで出力すると。以下のように情報を取得しています。

 Array ( 
	[ID] => 86 
	[key] => field_5d1e067b29982 
	[label] => 都道府県 
	[name] => Prefectures 
	[prefix] => acf 
	[type] => select 
	[value] => 北海道 
	[menu_order] => 0 
	[instructions] => [required] => 0 
	[id] => 
	[class] => 
	[conditional_logic] => 0 
	[parent] => 85 
	[wrapper] => Array ( [width] => [class] => [id] => ) 
	[choices] => Array ( [北海道] => 北海道 [青森県] => 青森県 [岩手県] => 岩手県 [秋田県] => 秋田県 [宮城県] => 宮城県 [山形県] => 山形県 [福島県] => 福島県 ) 
	[default_value] => Array ( [0] => 北海道 ) 
	[allow_null] => 0 
	[multiple] => 0 
	[ui] => 0 
	[return_format] => value 
	[ajax] => 0 
	[placeholder] => 
	[_name] => Prefectures 
	[_valid] => 1 
	)

例えば、選択肢群を取得したい場合、取得した配列に対して、['choices’]を指定すればOKです。