カスタム投稿タイプ画面からカスタム分類メタボックスを削除


15

それぞれ対応するカスタム投稿タイプに2つの階層的なカスタム分類があります。投稿タイプの編集画面でそれぞれのメタボックスを削除したいと思います。

私は読んだことがある削除カスタム分類metaboxフォームのカスタムポストタイプをし、どのようにカテゴリースタイル(階層)分類metaboxを削除するには?しかし、私はまだ立ち往生しています。

私が使用している関数は次のとおりです。

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'partner_typediv', 'partners', 'normal' );
    remove_meta_box( 'person_typediv', 'people', 'normal' );
}
add_action( 'admin_menu' , 'remove_taxonomies_metaboxes' );

post_typesとcustom_taxonomiesの接頭辞を外しましたが、それだけです。admin_menuフックとadd_meta_boxesコーデックスが推奨するフックを使用してみました。私は両方normalside3番目のパラメーターを試しました。

上記の関数はmu-plugins、投稿タイプと分類法を登録する関数の下のファイルにあります。


編集:それはregister_taxonomy関数のタイプミスでした。私は恐ろしい人です。助けてくれてありがとう。私はまだいくつかのことを学びました!


でも'show_ui' => false
JMau

1
投稿を編集するときだけではなく、メニューにUIを残したい
mrwweb

回答:


35

手動経由でカスタム分類を登録している場合register_taxonomy、あなたはmetaboxが表示される場所を制御するために引数を渡すことができます。

以下の例では、に設定show_uiするfalseと、編集画面、クイック編集画面、および管理メニューからメタボックスが完全に削除されます。ただし、設定show_uiすると、引数と引数trueを使用することで、より微妙な制御を実現できます(後者をfalseに設定すると、CPT編集画面でメタボックスが必要に応じて非表示になります)。show_in_quick_editmeta_box_cb

register_taxonomy( 'your_custom_taxonomy', array( 'your_custom_post_type' ), $args );
$args = array(
    'show_ui'                    => true,
    'show_in_quick_edit'         => false,
    'meta_box_cb'                => false,
);

うまくいく。管理メニューを保持し、カスタム投稿タイプの新規追加フォームでカスタム分類を削除します。ありがとう。
IT Vlogs 16年

ありがとうございました!post-newで非表示にする 'meta_box_cb' => falseを探していました。nullに設定すると、デフォルトのワードプレスバージョンが表示されます。
ライアンH

スムーズでシンプル。
トラビスファンデルフォント

6

post投稿タイプ画面ではなく、編集画面からボックスを削除したいので、適用したい投稿タイプに対してのみ分類法登録し、これを完全に回避できると仮定します。Codexの例では、次のbookような投稿タイプのサンプル分類のみを登録しています。

register_taxonomy( 'genre', array( 'book' ), $args );

これはあなたがする必要があることだと思いますが、投稿タイプまたは分類法の登録コードを投稿しませんでした。

自分でメタボックスを作成した場合(つまり、これらのボックスはデフォルトではありません)、この問題を回避する方法は、ポストタイプ固有のフックにメタボックスを登録することです。

do_action('add_meta_boxes_' . $post_type, $post);

または、上記の例を実行するには:

add_action('add_meta_boxes_book', 'your-box-callback');

これらのアプローチの1つでこれを解決できます。私はあなたがremove_meta_boxまったく使用する必要があるとは思わない。

登録されている投稿タイプからメタボックスを削除しようとしている場合、これは機能します(再びCodexの例に従います)。

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'genrediv', 'book', 'side' );
}
add_action( 'add_meta_boxes_book' , 'remove_taxonomies_metaboxes' );

私はそれadmin_menuが早すぎると確信していますが、それを確認しませんでした。add_metaboxes私にも役立ちます。なぜそれがあなたのために働かないのか分かりません。


不明確で申し訳ありません。投稿タイプ画面を意味しました。各分類法は、1つのカスタム投稿タイプにのみ登録されます。そのadd_meta_boxes_ *フックを簡単に使用しようとしましたが、そのバリエーションをいくつか試してみます(ただし、自動生成されたメタボックスを使用しています)。
mrwweb

次に、答えの最後のオプションでそれを行う必要があります。私はそれをテストしました。箱はなくなります。ただし、ボックスなしで分類法を使用するロジックを理解しているとは言えません。
s_ha_dum

(上記の編集を参照してください。それはタイプミスでした。それは私にあります...助けてくれてありがとう)。質問に答えるために、高度なカスタムフィールドを使用して分類法を表示しています(サイトのユーザーにとってはより良いインターフェイスです)。
mrwweb

あなたの最後の例は私を正しい方向に導きましたが、これは私にとってうまくいったものです:add_action( 'admin_menu'、 'remove_taxonomies_metaboxes');
マルコスBuarque

WordPressの現在のバージョンではこの構文が機能しないことがわかったので、有効なソリューションについてはこの回答を確認してください。
デイビー

3

カスタム分類管理にACFを使用すると、デフォルトのメタボックスは不要です。私はこのコードを試してみました:

      function remove_cuttax_metaboxes() {
           $post_type = 'post';
           $taxonomy = 'custom_taxonomy_slug';
           remove_meta_box( 'tagsdiv'.$taxonomy, $post_type, 'side' );

       }
       add_action( 'admin_menu' , 'remove_cuttax_metaboxes', 100 );

優先度が低い(100)ため、CPT-UIなどのプラグインによって分類法が作成された場合にもこのコードが機能します。


tagsdivの末尾にある必要があります-: remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );
グレッグヘイグッド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.