関係ないカスタムフィールドが出ちゃうからカスタム投稿タイプごとに表示・非表示を変えてみた

今までカスタムフィールドのプラグインはAdvanced Custom Fieldsを使っていました。見た目の使いやすさももちろんですが、カスタムフィールドを表示させる位置を具体的に設定できるのが魅力でした。たとえばnewsというカスタム投稿タイプ以外の投稿タイプで表示させたり、newsだけに表示させたり・・・。

しかし今回のクライアントワークで、このAdvanced Custom Fieldsが別のプラグインと相性が悪く、違うプラグインを使うことになりました。

そして問題がひとつ。表示させる投稿タイプを選ぶことはできても、「それ以外」という設定の仕方はできない!カスタム投稿タイプを複数使用しており、今後も増やす可能性があったので、選択するより除外する設定をしたかったのです。。

というわけで、フックを書いて対応することにしました〜。

※今回はTypesというプラグインを使用しました。

  1. カスタムフィールドのグループ名は英語で。
  2. idを調べる。
  3. functionsに記述。

1.カスタムフィールドのグループ名は英語で。

カスタムフィールドのグループ名を、英語で設定します。あとあとCSSを書く時に日本語だとわかりづらいので。

typesgroup


2.idを調べる。

pageid

要素検証か何かでidを調べます。この場合は「wpcf-group-page」でした!


3.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で非表示にしているだけですが、これで表示されなくなります!ハッピー!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です