web-dev-qa-db-fra.com

Supprimer la taxonomie personnalisée Metabox de l'écran Custom Post Type

J'ai deux taxonomies personnalisées hiérarchiques, chacune sur un type de message personnalisé correspondant. Je voudrais supprimer la metabox pour chacun sur l'écran d'édition du type d'article.

J'ai lu supprimer la taxonomie personnalisée metabox formulaire type de publication personnalisée et Comment supprimer une métabox de taxonomie de style Catégorie (hiérarchique)? mais je suis toujours coincé.

La fonction que j'utilise est:

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' );

J'ai corrigé les post_types et custom_taxonomies, mais c'est tout. J'ai essayé d'utiliser le hook admin_menu et le hook add_meta_boxes recommandés par le Codex. J'ai essayé à la fois normal et side pour le troisième paramètre.

La fonction ci-dessus est située dans un fichier mu-plugins sous la fonction qui enregistre les types de publication et les taxonomies.


EDIT: C'était une faute de frappe dans la fonction register_taxonomy. Je suis une personne horrible. Merci à tous pour l'aide. J'ai encore appris des trucs!

10
mrwweb

Si vous enregistrez manuellement votre taxonomie personnalisée via register_taxonomy , vous pouvez alors passer des arguments pour contrôler l'emplacement de la metabox.

Dans l'exemple ci-dessous, définir show_ui sur false supprimerait complètement la metabox de l'écran d'édition, de l'écran d'édition rapide et du menu admin. Mais si vous définissez show_ui sur true, vous pouvez obtenir un contrôle plus nuancé en utilisant ensuite les arguments show_in_quick_edit et meta_box_cb (définir le dernier sur false masque la metabox sur l'écran d'édition CPT comme vous le souhaitez).

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

Vous dites que vous souhaitez supprimer les cases de l'écran d'édition post, et non de l'écran Type de publication, supposant que vous devriez pouvoir enregistrer votre taxonomie uniquement pour les types de publication auxquels vous souhaitez qu'elle s'applique, et évitez cela tout à fait. L'exemple du Codex enregistre l'exemple de taxonomie uniquement pour le type d'article book, comme:

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

Je pense que c'est ce que vous devez faire, mais vous n'avez posté aucun code d'enregistrement pour les types d'article ou les taxonomies.

Si vous avez créé les boîtes de méta vous-même - c’est-à-dire que ces boîtes ne sont pas les boîtes par défaut -, le moyen d'éviter ce problème consiste à enregistrer les méta-boîtes sur les crochets spécifiques au type de post-type :

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

Ou pour suivre l'exemple ci-dessus:

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

Une de ces approches devrait résoudre ce problème pour vous. Je ne pense pas que vous devriez utiliser remove_meta_box du tout.

Si vous essayez de supprimer les méta-boîtes du type de message auquel elles sont enregistrées, cela fonctionne (en suivant à nouveau l'exemple du Codex):

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

Je suis à peu près sûr que admin_menu est trop tôt, mais je ne l'ai pas vérifié. add_metaboxes fonctionne également pour moi. Je ne sais pas pourquoi cela ne fonctionne pas pour vous.

5
s_ha_dum

En utilisant ACF pour la gestion des taxonomies personnalisées, les métaboxes par défaut sont inutiles. J'ai essayé avec succès ce code:

      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 );

La priorité inférieure (100) laisse ce code fonctionner aussi si les taxonomies sont créées par un plugin tel que CPT-UI.

0
fabiodipa