Je ne sais pas si c'est très différent d'une page à l'autre, mais je me demande comment supprimer un metabox de la page de menu de l'apparence> sans devoir entrer dans les fichiers core de WordPress et le supprimer. Est-ce que je peux faire quelque chose pour le remplacer afin qu'il n'apparaisse pas à la fois sur la page et sur le menu d'options à l'écran?
En inspectant le fichier /wp-admin/nav-menus.php
, nous pouvons voir que ces méta-boîtes:
sont rendus avec:
<?php do_meta_boxes( 'nav-menus', 'side', null ); ?>
Le fichier /wp-admin/includes/nav-menu.php
contient les appels add_meta_box()
correspondants et à partir desquels nous pouvons construire le code de suppression approprié:
function custom_remove() {
remove_meta_box('nav-menu-theme-locations', 'nav-menus', 'side');
remove_meta_box('add-custom-links', 'nav-menus', 'side');
remove_meta_box('add-post', 'nav-menus', 'side');
remove_meta_box('add-page', 'nav-menus', 'side');
remove_meta_box('add-category', 'nav-menus', 'side');
}
add_action('admin_head-nav-menus.php', 'custom_remove');
où nous pouvons utiliser par exemple l'action admin_head-nav-menus.php
puisqu'elle est appelée avant le rendu de ces méta-boîtes.
Si vous avez un type de message personnalisé (ou une taxonomie personnalisée), vous pouvez supprimer sa méta-boîte avec
remove_meta_box( 'add-xxx' , 'nav-menus' , 'side' );
où xxx
est le nom correspondant.
Vous pouvez également consulter les fonctions wp_nav_menu_setup()
, wp_nav_menu_post_type_meta_boxes()
et wp_nav_menu_taxonomy_meta_boxes()
pour voir comment les méta-boîtes sont ajoutées.
if (!is_admin()) return;
// See https://developer.wordpress.org/reference/functions/wp_nav_menu_taxonomy_meta_boxes/
// $taxonomy_object is of type WP_Post_Type
add_filter('nav_menu_meta_box_object', function ($taxonomy_object) {
if (in_array($taxonomy_object->name, ['page', 'post', 'category'] )) {
return null;
}
return $taxonomy_object;