Supprimer la métabox de taxonomie personnalisée de l'écran Type de publication personnalisé

15

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

J'ai lu Supprimer le type de publication personnalisé du formulaire de métaboxe de taxonomie personnalisée et Comment supprimer un 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 non préfixé les post_types et custom_taxonomies, mais c'est tout. J'ai essayé d'utiliser le admin_menucrochet et le add_meta_boxescrochet recommandé par le Codex. J'ai essayé les deux normalet sidepour le troisième paramètre.

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


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

mrwweb
la source
même avec 'show_ui' => false?
JMau
1
Je veux toujours l'interface utilisateur dans le menu, mais pas lors de la modification d'un message.
mrwweb

Réponses:

35

Si vous enregistrez manuellement votre taxonomie personnalisée via register_taxonomy, vous pouvez passer des arguments pour contrôler où la métabox apparaît.

Dans l'exemple ci-dessous, le paramètre show_uià falsesupprimerait complètement la métaboxe de l'écran d'édition, de l'écran d'édition rapide et du menu d'administration. Mais si vous définissez show_uisur truevous pouvez obtenir un contrôle plus nuancé en utilisant ensuite les arguments show_in_quick_editet meta_box_cb(en définissant ce dernier sur false masque la métabox 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,
);
locomo
la source
Ça marche. garder le menu d'administration et supprimer la taxonomie personnalisée dans le formulaire ajouter un nouveau type de message personnalisé. Merci.
IT Vlogs du
Je vous remercie! Je cherchais 'meta_box_cb' => false pour le masquer dans post-new, où le définir sur null n'affiche que la version wordpress par défaut.
Ryan H
Lisse et simple.
Travis van der Font
6

Vous dites que vous souhaitez supprimer les cases de l' postécran d'édition, pas de l'écran Type de publication, donc en supposant que vous devriez être en mesure d' enregistrer votre taxonomie uniquement pour les types de publication auxquels vous souhaitez qu'il s'applique, et évitez complètement cela. L'exemple du Codex enregistre l'exemple de taxonomie uniquement pour le booktype de message comme:

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

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

Si vous avez créé les méta-boîtes vous-même - c'est-à-dire que ces boîtes ne sont pas celles par défaut - alors la façon d'éviter ce problème est d'enregistrer les méta-boîtes sur les crochets spécifiques de type post :

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_boxdu tout.

Si vous essayez de supprimer les métadonnées du type de publication auquel elles sont enregistrées, cela fonctionne (à nouveau en suivant 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 presque sûr que admin_menuc'est trop tôt, mais je n'ai pas vérifié cela. add_metaboxesfonctionne aussi pour moi. Je ne sais pas pourquoi ça ne marche pas pour toi.

s_ha_dum
la source
Désolé d'être flou. Je voulais dire l' écran Post Type . Chaque taxonomie n'est enregistrée que pour un type de publication personnalisé. J'ai essayé d'utiliser brièvement ce crochet add_meta_boxes_ * mais je vais essayer quelques variantes (bien que j'utilise les métaboxes générées automatiquement).
mrwweb
Ensuite, la dernière option de la réponse devrait le faire. Je l'ai testé. La boîte s'en va. Je ne peux pas dire que je comprends la logique d'avoir les taxonomies sans les boîtes.
s_ha_dum
(Voir modification ci-dessus. C'était une faute de frappe. C'est sur moi ... Merci pour l'aide). Pour répondre à votre question, j'affiche les taxonomies avec un champ personnalisé avancé (c'est une meilleure interface pour les utilisateurs du site).
mrwweb
Votre dernier exemple m'a mis dans la bonne direction, mais c'est ce qui a fonctionné pour moi: add_action ('admin_menu', 'remove_taxonomies_metaboxes');
Marcos Buarque
J'ai trouvé que cette syntaxe ne fonctionne pas avec la version actuelle de WordPress, vérifiez cette réponse pour une solution de travail.
Davey
3

En utilisant ACF pour la gestion des taxonomies personnalisées, les métaboxes par défaut ne sont pas nécessaires. 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 également si les taxonomies sont créées par un plugin comme CPT-UI.

fabiodipa
la source
tagsdiv devrait avoir une fuite -: remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );
Greg Haygood