web-dev-qa-db-ja.com

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

私は2つの階層的なカスタム分類法を持ち、それぞれが対応するカスタム投稿タイプに基づいています。投稿タイプの編集画面でそれぞれのメタボックスを削除します。

カスタム分類メタボックスフォームカスタム投稿タイプを削除しました および カテゴリスタイル(階層)分類メタボックスを削除するにはどうすればよいですか。 しかし私はまだ立ち往生している.

私が使っている機能は次のとおりです。

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の接頭辞は付けませんでしたが、それで終わりです。 Codexが推奨するadmin_menuフックとadd_meta_boxesフックを使ってみました。 3番目のパラメータにnormalsideの両方を試しました。

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


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

10
mrwweb

register_taxonomy を使用してカスタム分類法を手動で登録している場合は、メタボックスが表示される場所を制御するために引数を渡すことができます。

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

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,
);
26
locomo

あなたは、Post type画面ではなくpost編集画面からボックスを削除したいと言っています、それであなたはそれを適用したいpost typeのためだけに 分類法の登録 をすることができるはずです、そしてこれを完全に避けてください。 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を使うべきではないと思います。

登録されている投稿タイプからメタボックスを削除しようとしている場合は、これでうまくいきます(これもコーデックスの例に従います)。

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

admin_menuが早すぎると確信していますが、それを検証しませんでした。 add_metaboxesも私のために働きます。それがなぜあなたにはうまくいかないのか私にはわかりません。

5
s_ha_dum

カスタム分類管理に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のようなプラグインによって作成された場合にもこのコードを機能させます。

0
fabiodipa