TECHBLOG

WordPress > プラグイン

get_field と get_fields、get_field_objectなど

Create:

Category:WordPressプラグイン

Series:Advanced Custom Fields PRO

[ Version.19 ]

概要

弊社で標準インストールするプラグイン「Advanced Custom Fields PRO」。

このプラグインには、関数(グローバルで使用できる関数)があります。

その最も代表的なものとして、get_field、get_fields、get_field_object、get_fields_object があります。

いずれもカスタムフィールドの値を postmeta から取得する関数です。

プラグインの独自関数について

これは、WordPressのコンセプトなので仕方がないのですが、プラグインごとの独自関数が多くなると、システムの管理が煩雑になります。

例えば、異なるプラグイン が plugin_method() という関数を使用できるようにしている場合、functions_exist()でエラーを回避しても、どちらかの関数は意図しない動作になります。

システムの歴史として、この関数衝突を防ぐために Class 、Class内でprotected やprivate、namespace で名前空間、と改善されてきました。

※ 一部語弊はありますが。

弊社では、関数を把握し、極力少ない状態でシステム管理しています。

各関数の違い

※ $acf はカスタムフィールドの name値(表示ラベル=labelではありません) です。

get_field

$val = get_field($acf, $post_id);

返り値は「入力欄のタイプ」と「設定画面 返り値設定」のによって異なります。

結論から言いますとこれだけを使用しています。

get_fields

$val = get_fields($post_id);

$post_id に紐づくカスタムフィールドの値を一括で取得。

「なんと便利!」と思いきや、意外と使えません。使いません。

カスタムフィールドを運営中に追加しますと、そこから先、更新したものは意図したタイプで返ってきますが、過去の分は配列など空文字が返りますので思わぬエラーが出たりします。

get_field_object

$val = get_field_object($acf, $post_id);

返り値は、各フィールドに関する情報を一括取得。「入力欄のタイプ」によって異なります。

「返り値設定に関わらず、全情報を取得できる!」と思いきや「設定画面 返り値設定」で指定してた値が $val[‘value’] に入り、画像で返り値=URLにすると thumbnail も medium も返ってきません。

add_filter した際のデバッグには役立ちます。

get_fields_object

$val = get_fields_object($post_id);

上記二つの理由から、利用しません。割愛します。

loading