web-dev-qa-db-fra.com

Comment puis-je ajouter un support à mon thème pour les menus personnalisés?

J'ai lu quelques tutoriels sur la façon d'ajouter à mon thème les fonctionnalités des menus personnalisés ajoutés à la version 3.0, mais ils semblent tous différer quelque peu et je ne suis pas sûr qu'ils contiennent du code superflu. De plus, j'ai lu que le code pour enregistrer votre thème en tant que menu compatible a changé entre la version RC et la version publique.

Quelle est la manière la plus simple d’ajouter une prise en charge de menus personnalisés à mon thème?

6
nobody

Le moyen le plus simple consiste à utiliser la fonction register_nav_menus. Celle-ci devrait être connectée à 'after_setup_theme':

function my_cool_menu_function(){
  register_nav_menus( array(
    'primary' => 'Primary Navigation'
  ));
}

add_action( 'after_setup_theme', 'my_cool_menu_function' );

Ensuite, dans votre thème, appelez simplement la position de ce menu:

wp_nav_menu( array( 'theme_location' => 'primary' ) );
9
John P Bloch

Ajoutez ceci àfunctions.phpde votre thème. Si vous n'en avez pas, créez-le.

<?php
add_theme_support('menus');
function register_my_menus() {
    $args = array( 
        'menu-1' => __( 'Main Menu' )
    );
    register_nav_menus( $args );
}
add_action( 'init', 'register_my_menus' );
?>

Et cela peut aller n'importe où, je l'ai dansheader.php(voir wp_nav_menu () docs):

<?php
$args = array(
    'menu' => 'Main Menu',
    'sort_column' => 'menu_order',
    'container' => 'div',
);
wp_nav_menu( $args ); ?>
3
artlung

Cette façon d’inclure la navigation personnalisée dans sa forme la plus simple, je crois qu’elle reprend la navigation sans identifiant:

<div class="access">
  <?php wp_nav_menu(); ?>
</div>

Il y a aussi des options de base qui peuvent être passées à la fonction, voici ce que j'utilise généralement:

$navArgs=array(
    'menu_id' => 'nav',    // target the nav menu
    'container' => '',     // don't wrap the menu in <ul>
);
0
Ben Everard