it-swarm.com.de

Wie entferne ich eine Metabox von der Seite des Menüeditors?

Ich bin mir nicht sicher, ob es für eine Seite anders ist, aber ich frage mich, wie ich eine Metabox von der Seite "Darstellung> Menü" entfernen kann, ohne in die WordPress-Kerndateien gehen und sie entfernen zu müssen. Kann ich etwas tun, um es zu überschreiben, damit es nicht sowohl auf der Seite als auch im Menü mit den Bildschirmoptionen angezeigt wird?

3
user1632018

Durch Einsicht in die Datei /wp-admin/nav-menus.php können wir feststellen, dass diese Meta-Boxen:

metaboxes

werden gerendert mit:

<?php do_meta_boxes( 'nav-menus', 'side', null ); ?>

Die Datei /wp-admin/includes/nav-menu.php enthält die entsprechenden add_meta_box()-Aufrufe und daraus können wir den entsprechenden Entfernungscode erstellen:

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

wobei wir zum Beispiel die Aktion admin_head-nav-menus.php verwenden können, da sie aufgerufen wird, bevor diese Meta-Boxen gerendert werden.

Wenn Sie einen benutzerdefinierten Beitragstyp (oder eine benutzerdefinierte Taxonomie) haben, können Sie die Meta-Box mit entfernen

   remove_meta_box( 'add-xxx' , 'nav-menus' , 'side' ); 

dabei ist xxx der entsprechende Name.

Sie können auch die Funktionen wp_nav_menu_setup(), wp_nav_menu_post_type_meta_boxes() und wp_nav_menu_taxonomy_meta_boxes() überprüfen, um zu sehen, wie die Meta-Boxen hinzugefügt werden.

4
birgire
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;
0
realtebo