Existe-t-il un moyen de supprimer le "Menu" ou le devcode nav_menus
du personnaliseur?
J'ai essayé $wp_customize->remove_section('nav_menus');
mais cela n'a pas fonctionné.
$wp_customize->remove_section('nav_menu');
(s supprimé) ne fonctionnait pas non plus.
$wp_customize->remove_section('menus');
n'a pas non plus fonctionné.
$wp_customize->remove_section('wp_nav_menus');
n'a pas fonctionné non plus.
S'il vous plaît aidez-moi ici!
Ceci est un panneau et non une section, donc remove_section()
ne fonctionnera pas dans ce cas. Cependant, vous pouvez utiliser la fonction remove_panel()
mais cela déclenchera un avis disant
Avis: WP_Customize_Manager :: remove_panel a été appelé incorrectly Supprimer manuellement nav_menus causera PHP avertissements. Utilisez plutôt le filtre
customize_loaded_components
. S'il vous plaît voir le débogage dans WordPress pour plus d'informations. (Ce message a été ajouté à la version 4.5.) Dans\wp-includes\functions.php à la ligne 3897
Maintenant customize_loaded_components
filter dit
Cela permet d’exclure les composants principaux de l’instant en les filtrant hors de la matrice. Notez que ce filtre s’exécute généralement pendant l’action ‘plugins_loaded’ et qu’il ne peut donc pas être ajouté à un thème.
Il n’existe donc aucun moyen simple de supprimer une section de menu du personnalisateur et d’utiliser un thème, mais si vous le souhaitez, j’ai trouvé une solution (peut-être pas si bonne) qui fonctionne sans aucun avertissement ni erreur.
Dans la classe WP_Customize_Nav_Menus
, vérification du constructeur pour
if ( ! current_user_can( 'edit_theme_options' ) ) {
return;
}
Et puis enregistrez toutes les actions/filtres pour la section de menu de la nef, supprimant ainsi tous les filtres/actions pouvant faire l'affaire. Mais pour supprimer ces filtres/actions, nous avons besoin du même objet que celui utilisé pour les enregistrer. Et oui, nous l’avons dans le rappel d’action customize_register
.
Vous pouvez ajouter ce code à votre thème functions.php
add_action('customize_register', function ( $WP_Customize_Manager ){
//check if WP_Customize_Nav_Menus object exist
if (isset($WP_Customize_Manager->nav_menus) && is_object($WP_Customize_Manager->nav_menus)) {
//Remove all the filters/actions resiterd in WP_Customize_Nav_Menus __construct
remove_filter( 'customize_refresh_nonces', array( $WP_Customize_Manager->nav_menus, 'filter_nonces' ) );
remove_action( 'wp_ajax_load-available-menu-items-customizer', array( $WP_Customize_Manager->nav_menus, 'ajax_load_available_items' ) );
remove_action( 'wp_ajax_search-available-menu-items-customizer', array( $WP_Customize_Manager->nav_menus, 'ajax_search_available_items' ) );
remove_action( 'customize_controls_enqueue_scripts', array( $WP_Customize_Manager->nav_menus, 'enqueue_scripts' ) );
remove_action( 'customize_register', array( $WP_Customize_Manager->nav_menus, 'customize_register' ), 11 );
remove_filter( 'customize_dynamic_setting_args', array( $WP_Customize_Manager->nav_menus, 'filter_dynamic_setting_args' ), 10, 2 );
remove_filter( 'customize_dynamic_setting_class', array( $WP_Customize_Manager->nav_menus, 'filter_dynamic_setting_class' ), 10, 3 );
remove_action( 'customize_controls_print_footer_scripts', array( $WP_Customize_Manager->nav_menus, 'print_templates' ) );
remove_action( 'customize_controls_print_footer_scripts', array( $WP_Customize_Manager->nav_menus, 'available_items_template' ) );
remove_action( 'customize_preview_init', array( $WP_Customize_Manager->nav_menus, 'customize_preview_init' ) );
remove_filter( 'customize_dynamic_partial_args', array( $WP_Customize_Manager->nav_menus, 'customize_dynamic_partial_args' ), 10, 2 );
}
}, -1); //Give it a lowest priority so we can remove it on right time