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; }
ただし基本に入っている「テキスト」や「数値」は、プラグインの他の箇所でも使われているので、ここで取り除いてしまうと、不具合がでる可能性があるので注意してください。