今までカスタムフィールドのプラグインはAdvanced Custom Fieldsを使っていました。見た目の使いやすさももちろんですが、カスタムフィールドを表示させる位置を具体的に設定できるのが魅力でした。たとえばnewsというカスタム投稿タイプ以外の投稿タイプで表示させたり、newsだけに表示させたり・・・。
しかし今回のクライアントワークで、このAdvanced Custom Fieldsが別のプラグインと相性が悪く、違うプラグインを使うことになりました。
そして問題がひとつ。表示させる投稿タイプを選ぶことはできても、「それ以外」という設定の仕方はできない!カスタム投稿タイプを複数使用しており、今後も増やす可能性があったので、選択するより除外する設定をしたかったのです。。
というわけで、フックを書いて対応することにしました〜。
※今回はTypesというプラグインを使用しました。
カスタムフィールドのグループ名は英語で。
カスタムフィールドのグループ名を、英語で設定します。あとあとCSSを書く時に日本語だとわかりづらいので。
idを調べる。
要素検証か何かでidを調べます。この場合は「wpcf-group-page」でした!
functionsに記述。
下の例では「news」「mainvisual」「bnr」の3つのカスタム投稿タイプにはpageカスタムフィールドを表示させないことになります。
//関係ないカスタム投稿タイプ編集画面でpageカスタムフィールドを隠す function field_none() { global $current_screen; switch ($current_screen->post_type) { case 'news': echo "<style>#wpcf-group-page {display:none;}</style>"; break; case 'mainvisual': echo "<style>#wpcf-group-page {display:none;}</style>"; break; case 'bnr': echo "<style>#wpcf-group-page {display:none;}</style>"; break; } } add_action('admin_head', 'field_none');
CSSで非表示にしているだけですが、これで表示されなくなります!ハッピー!