WordPress : Impossible d’ajouter un paramètre au panneau de personnalisation « nav_menus »
J’essaie d’ajouter une case à cocher au panneau « Menus » dans le personnalisateur, mais pour une raison quelconque, elle ne s’affiche pas. Si j’essaie de le changer de « nav_menus » à « title_tagline » ou « colors », la case à cocher s’affiche très bien. Qu’est-ce qui pourrait l’empêcher d’apparaître dans le panneau « Menus » ?
// add custom options to the Customizer
function nssra_customizer_options($wp_customize) {
// add "menu primary flex" checkbox setting
$wp_customize->add_setting("menu_primary_flex", array(
"capability" => "edit_theme_options",
"default" => "1",
"sanitize_callback" => "nssra_sanitize_checkbox",
));
// add "menu primary flex" checkbox control
$wp_customize->add_control("menu_primary_flex", array(
"label" => __("Stretch the primary menu to fill the available space.", "nssra"),
"section" => "nav_menus",
"settings" => "menu_primary_flex",
"std" => "1",
"type" => "checkbox",
"priority" => 1,
));
}
add_action("customize_register", "nssra_customizer_options");
// sanitize checkbox fields
function nssra_sanitize_checkbox($input, $setting) {
return sanitize_key($input) === "1" ? 1 : 0;
}
Solution n°1 trouvée
Ajoutez ce qui suit ici au cas où vous vous perdriez en cours de route comme je l’ai fait. La solution de @odiPlabon est correcte pour le panneau « nav_menus ». Je suis venu chercher à ajouter des paramètres aux sections de menu individuelles, par exemple des menus thématiques comme le « Menu principal » ou le « Menu secondaire ».
Pour ceux qui sont aussi perdus que moi, la « section » que vous recherchez est « nav_menu[ $n ] ». Où $n est le term_id du menu de navigation.
Vous pouvez voir le term_id dans les paramètres de requête de l’url dans la barre d’adresse pour le menu actuellement affiché – sur la page WordPress Admin > Apparence > Menus, c’est-à-dire « ?action=edit&menu=43 » <– 43 étant le term_id
$menus = wp_get_nav_menus();
if ( ! $menus && ! is_iterable($menus)) :
return;
endif;
foreach ($menus as $menu) :
//
$wp_customize->add_setting(
'menu_postition_' . $menu->term_id, // your setting name
array(
'settings' => 'nav_menu[' . $menu->term_id . ']',
'default' => 'menu-static',
)
);
//
$wp_customize->add_control(
'menu_postition_' . $menu->term_id, // your setting name
array(
'type' => 'select',
'priority' => 20,
'label' => __('Menu Position:','text-domain),
'section' => 'nav_menu[' . $menu->term_id . ']',
'choices' => array(
'menu-static' => 'Normal',
'menu-fixed-top' => 'Fixed Top',
'menu-sticky-top' => 'Sticky Top',
),
)
);
endforeach;
Solution n°2 trouvée
Vous ne pouvez pas ajouter de contrôle/paramètre nav_menus
car ce n’est pas une section qui est un panneau. Et le contrôle/réglage ne peut être ajouté qu’à la section. Vous devez donc d’abord créer une section sous nav_menus
le panneau, puis ajouter votre contrôle/paramètre à cette section. Vérifiez le code suivant
function nssra_customizer_options( $wp_customize ) {
// add a custom section
$wp_customize->add_section( 'nav_menus_custom', array(
'title' => __( 'Custom Section Title', 'nssra' ),
'panel' => 'nav_menus'
) );
// add "menu primary flex" checkbox setting
$wp_customize->add_setting( 'menu_primary_flex', array(
'capability' => 'edit_theme_options',
'default' => '1',
'sanitize_callback' => 'nssra_sanitize_checkbox',
) );
// add 'menu primary flex' checkbox control
$wp_customize->add_control( 'menu_primary_flex', array(
'label' => __( 'Stretch the primary menu to fill the available space.', 'nssra' ),
'section' => 'nav_menus_custom',
'settings' => 'menu_primary_flex',
'std' => '1',
'type' => 'checkbox',
'priority' => 1,
));
}
add_action( 'customize_register', 'nssra_customizer_options' );
// sanitize checkbox fields
function nssra_sanitize_checkbox( $input, $setting ) {
return sanitize_key( $input ) === '1' ? 1 : 0;
}
Update
Vous devez ajouter une section description
pour créer l’ apparence des emplacements de menupriority
et si vous souhaitez modifier l’emplacement de la section, vous pouvez définir . priority => 5
placera la section personnalisée avant Menu Locations , si vous faites cela, vous devrez peut-être ajuster certains styles. Veuillez vérifier le code ci-dessous pour la configuration de section mise à jour.
$wp_customize->add_section( 'nav_menus_custom', array(
'title' => __( 'Custom Section Title', 'nssra' ),
'panel' => 'nav_menus',
'description' => __( 'Section description goes here.', 'nssra' ),
'priority' => 5
) );
0 commentaire