Advanced Custom Fields ver.4.3.0 がリリースされました。今まではアドオン扱いだった Google Map が標準搭載になりました。標準になることで、利用する人はインストールする手間が減りますが、利用しない人はフィールドの選択時のドロップダウンリストが長くなってうざったい、と思うかもしれません。なので、Advanced Custom Fields で不要なフィールドを削除する方法を紹介します。
Advanced Custom Fields には様々なフックが用意されており、カスタマイズしやすくなっています。今回のカスタマイズにも、フックが役立ちます。
core/views/meta_box_fields.php に
$field_types = apply_filters('acf/registered_fields', array());
があります。この acf/registered_fieldsフィルターフックを利用します。このフィルターで編集できる配列は
array(6) {
["基本"]=>
array(5) {
["text"]=>
string(12) "テキスト"
["textarea"]=>
string(21) "テキストエリア"
["number"]=>
string(6) "数値"
["email"]=>
string(9) "メール"
["password"]=>
string(15) "パスワード"
}
["Content"]=>
array(3) {
["wysiwyg"]=>
string(20) "Wysiwyg エディタ"
["image"]=>
string(6) "画像"
["file"]=>
string(12) "ファイル"
}
["選択肢"]=>
array(4) {
["select"]=>
string(24) "セレクトボックス"
["checkbox"]=>
string(24) "チェックボックス"
["radio"]=>
string(18) "ラジオボタン"
["true_false"]=>
string(7) "真/偽"
}
["Relational"]=>
array(5) {
["page_link"]=>
string(18) "ページリンク"
["post_object"]=>
string(24) "投稿オブジェクト"
["relationship"]=>
string(6) "関連"
["taxonomy"]=>
string(18) "タクソノミー"
["user"]=>
string(12) "ユーザー"
}
["jQuery"]=>
array(3) {
["google_map"]=>
string(10) "Google Map"
["date_picker"]=>
string(21) "デイトピッカー"
["color_picker"]=>
string(21) "カラーピッカー"
}
["レイアウト"]=>
array(2) {
["message"]=>
string(15) "メッセージ"
["tab"]=>
string(6) "タブ"
}
}
となっています。ここの配列から不要なものを削除すると、フィールド選択の候補に表示されなくなります。
たとえば、「真/偽」「デイトピッカー」を削除する場合です。
add_filter('acf/registered_fields','remove_default_fields',11);
function remove_default_fields($array) {
unset($array['選択肢']['true_false']);
unset($array['jQuery']['date_picker']);
return $array;
}
ただし基本に入っている「テキスト」や「数値」は、プラグインの他の箇所でも使われているので、ここで取り除いてしまうと、不具合がでる可能性があるので注意してください。

