web-dev-qa-db-fra.com

Supprimer les métaboxes inutilisables dans l'écran de gestion du menu de navigation

Lorsque vous visitez wp-admin/nav-menus.php et qu’il n’ya pas de menu, vous obtenez un ensemble de métaboxes que vous ne pouvez pas utiliser. La seule chose qu'ils font est de détourner l'attention de la boîte de dialogue Créer un menu .

enter image description here

Je veux cacher ces cases jusqu'à ce qu'il y ait un menu.

enter image description here

Comment puis je faire ça?

4
fuxia

wp-admin/nav-menus.php contient deux variables globales importantes:

  • $nav_menus est un tableau de tous les menus disponibles, rempli avec wp_get_nav_menus() .
  • $wp_meta_boxes['nav-menus'] est un tableau de toutes les métaboxes disponibles pour cet écran.

Nous pouvons nous connecter à admin_head-nav-menus.php, une action appelée après la configuration de la première variable, et modifier la seconde variable:

add_action( 'admin_head-nav-menus.php', 't5_hide_dead_menu_metaboxes' );

/**
 * Remove metaboxes for menu items when no menu exists.
 *
 * @wp-hook admin_head-nav-menus.php
 * @return  void
 */
function t5_hide_dead_menu_metaboxes()
{
    empty ( $GLOBALS['nav_menus'] )
        and $GLOBALS['wp_meta_boxes']['nav-menus'] = array ();
}

Télécharger en tant que le plugin T5 Masquer les métaboxes du menu mort depuis GitHub.

Informations complémentaires:

Après avoir supprimé les boîtes de méta, l’écran est un peu étrange. Nous pourrions changer un peu le crochet initial et ajouter quelques styles pour le rendre meilleur. Donc, notre crochet pourrait être:

/**
 * Remove metaboxes for menu items when no menu exists.
 *
 * @wp-hook admin_head-nav-menus.php
 * @return  void
 */
function t5_hide_dead_menu_metaboxes()
{
    if ( empty( $GLOBALS['nav_menus'] ) ) {
        $GLOBALS['wp_meta_boxes']['nav-menus'] = array ();
        echo '<style> #nav-menus-frame { margin-left: 0 !important; padding-top: 20px; } </style>';
    }
}

Ensuite, l'écran aura l'air plus naturel:

enter image description here

4
fuxia