カスタムフィールドといえば定番のACF。すごく便利です。
https://www.advancedcustomfields.com/
毎回管理画面から設定していくのが面倒くさいのでfunctins.phpで書いてみました。
コードで書くと良いところ
- 画面をポチポチと押していかないで済む。特に繰り返しのグループとか作っていると混乱する。
- ローカルの環境(Docker) → テスト環境 → 本番環境 って構成の場合にテーマファイルのアップロードで済む。
書き方
以下にドキュメントがあります。コレ見れば大体わかります。
https://www.advancedcustomfields.com/resources/register-fields-via-php/
基本的な書き方
// 基本。phpのarray in arrayってすごく読みづらい。。
acf_add_local_field_group(array(
array(
"key" => "field_unique_id", // WPでユニーク?
"label" => "ラベル", // 表示ラベル
"name" => "var_name", // テンプレート側で探す時の変数名
"type" => "text", // 入力タイプ
),
));
なぜかタイプ一覧がドキュメントにないので察する(調べ方は下に書きます)
だいたいタイトルになっているXXXX FIELD SETTINGS
のXXXXの部分がタイプ名。
グループとか繰り返しとか
ここら辺はドキュメントにサンプルが書いていない。
ので色々調べた結果以下。
acf_add_local_field_group(array(
// グループ ----------------------------------------
array(
"key" => "field_group",
"label" => "グループ",
"name" => "group_name",
"type": => "group",
"sub_fields" => array(
arary(
"type" => "text",
"key" => "field_group_key_text",
"label" => "グループ>テキスト",
"name" => "group_text"
),
arary(
"type" => "number",
"key" => "field_group_key_number",
"label" => "グループ>数字",
"name" => "group_number"
),
),
// 繰り返し -----------------------------------------
array(
"key" => "field_repeat",
"label" => "繰り返し",
"name" => "group_repeat",
"type": => "repeater",
"button_label"=> "追加",
"sub_fields" => array(
arary(
"type" => "image",
"key" => "field_repeat_image",
"label" => "画像",
"name" => "repeat_image"
),
)
),
));
書き方の調べ方
管理画面 > カスタムフィールド > Tools にGenerate PHPがあるのでここでPHPのコードをかき出してくれます(色々調べてから見つけた。。。)
作りたいUIを画面で作成してかき出してみればタイプ名や設定値などが全て分かりました。