Affiche un menu de navigation.

Paramètres

$args

(tableau)(Facultatif)Tableau des arguments du menu de navigation.

  • 'menu'
    (int|string|WP_Term) Menu souhaité. Accepte un ID de menu, un slug, un nom ou un objet.
  • 'menu_class' (int|string|WP_Term)
    (chaîne de caractères) Classe CSS à utiliser pour l'élément ul qui forme le menu. Par défaut, 'menu'.
  • 'menu_id'
    (chaîne de caractères) L'ID qui est appliqué à l'élément ul qui forme le menu. Par défaut, c'est le slug du menu, incrémenté.
  • "conteneur
    (chaîne de caractères) S'il faut envelopper le ul, et avec quoi l'envelopper. Par défaut, 'div'.
  • 'container_class' (chaîne de caractères)
    (chaîne de caractères) Classe qui est appliquée au conteneur. Par défaut, 'menu-{menu slug}-container'.
  • 'container_id' (chaîne de caractères)
    (chaîne de caractères) L'identifiant qui est appliqué au conteneur.
  • 'container_aria_label'
    (chaîne de caractères) L'attribut aria-label qui est appliqué au conteneur lorsqu'il s'agit d'un élément nav.
  • 'fallback_cb'
    (appelable|false) Si le menu n'existe pas, une fonction de rappel sera déclenchée. La valeur par défaut est 'wp_page_menu'. Définissez à false pour aucun fallback.
  • 'avant'
    (chaîne de caractères) Texte précédant le balisage du lien.
  • après
    (chaîne de caractères) Texte situé après le balisage du lien.
  • lien_avant
    (chaîne de caractères) Texte précédant le texte du lien.
  • lien_après
    (chaîne de caractères) Texte situé après le texte du lien.
  • 'echo'
    (bool) Indique s'il faut faire écho au menu ou le retourner. Par défaut, true.
  • 'profondeur'
    (int) Combien de niveaux de la hiérarchie doivent être inclus. 0 signifie tout. Par défaut 0. Par défaut 0.
  • "marcheur
    (objet) Instance d'une classe de marcheur personnalisée.
  • 'theme_location'
    (chaîne de caractères) Emplacement du thème à utiliser. Doit être enregistré avec register_nav_menu() afin d'être sélectionnable par l'utilisateur.
  • 'items_wrap' (chaîne de caractères)
    (chaîne de caractères) Comment les éléments de la liste doivent être enveloppés. Utilise le format printf() avec des placeholders numérotés. La valeur par défaut est un ul avec un id et une classe.
  • 'espacement_de_l'élément'
    (chaîne de caractères) Indique s'il faut préserver les espaces blancs dans le HTML du menu. Accepte 'preserve' ou 'discard'. Par défaut, 'preserve'.

Valeur par défaut : array()

Retourne

(void|string|false) Nul si l'argument 'echo' est vrai, sortie du menu si 'echo' est faux. False s'il n'y a pas d'éléments ou si aucun menu n'a été trouvé.

Plus d'informations

Utilisation

wp_nav_menu($args);

Étant donné un emplacement_thème paramètre, la fonction affiche le menu attribué à cet emplacement. Si un tel emplacement n'existe pas ou si aucun menu ne lui est attribué, le paramètre fallback_cb déterminera ce qui est affiché.

Si l'on ne donne pas un emplacement_thème paramètre, la fonction affiche

  • le menu correspondant à l'ID, au slug, ou au nom donné par le paramètre menu paramètre ;
  • sinon, le premier menu non vide ;
  • sinon (ou si le menu donné par menu est vide), la sortie de la fonction donnée par la fonction fallback_cb (wp_page_menu(), par défaut) ;
  • sinon rien.

Classes CSS des éléments de menu

Les classes suivantes sont appliquées aux éléments de menu, c'est-à-dire au HTML.

  • générées par les balises wp_nav_menu():

    Tous les éléments de menu

    • .menu-item
      Cette classe est ajoutée à chaque élément de menu.
    • .menu-item-has-children
      Cette classe est ajoutée à l'élément de menu qui a des sous-éléments .
    • .menu-item-object-{object}
      Cette classe est ajoutée à chaque élément de menu, où {objet} est soit un type de post, soit une taxonomie.
    • .menu-item-object-category
      Cette classe est ajoutée aux éléments de menu qui correspondent à une catégorie.
    • .menu-item-object-tag
      Cette classe est ajoutée aux éléments de menu qui correspondent à une balise.
    • .menu-item-object-page
      Cette classe est ajoutée aux éléments de menu qui correspondent à des pages statiques.
    • .menu-item-object-{custom}
      Cette classe est ajoutée aux éléments de menu qui correspondent à un type de post personnalisé ou à une taxonomie personnalisée.
    • .menu-item-type-{type}
      Cette classe est ajoutée à chaque élément de menu, où {type} est soit "post_type", soit "taxonomie".
    • .menu-item-type-post_type
      Cette classe est ajoutée aux éléments de menu qui correspondent à des types de post : c'est-à-dire des pages statiques ou des types de post personnalisés.
    • .menu-item-type-taxonomy
      Cette classe est ajoutée aux éléments de menu qui correspondent à des taxonomies : c'est-à-dire des catégories, des balises ou des taxonomies personnalisées.

    Éléments de menu de la page actuelle

    • .current-menu-item
      Cette classe est ajoutée aux éléments de menu qui correspondent à la page actuellement rendue.

    Eléments de menu parents de la page actuelle

    • .current-menu-parent
      Cette classe est ajoutée aux éléments de menu qui correspondent au parent hiérarchique de la page actuellement rendue.
    • .current-{object}-parent
      Cette classe est ajoutée aux éléments de menu qui correspondent au parent hiérarchique de l'objet actuellement rendu, où {objet} correspond à la valeur utilisée pour .menu-item-objet-{objet}.
    • .current-{type}-parent
      Cette classe est ajoutée aux éléments de menu qui correspondent au parent hiérachique du type actuellement rendu, où {type} correspond à la valeur utilisée pour .Menu-item-type- {type}.

    Éléments de menu des ancêtres de la page actuel

    • .current-menu-ancestor
      Cette classe est ajoutée aux éléments de menu qui correspondent à un ancêtre hiérarchique de la page actuellement rendue.
    • .current-{object}-ancestor
      Cette classe est ajoutée aux éléments de menu qui correspondent à un ancêtre hiérachique de l'objet actuellement rendu, où {objet} correspond à la valeur utilisée pour .meu-item-object- {objet}.
    • .current-{type}-ancestor
      Cette classe est ajoutée aux éléments de menu qui correspondent à un ancêtre hiérachique du type actuellement rendu, où {type} correspond à la valeur utilisée pour .Menu-item-type- {type}.

    Éléments de menu de page du site

    • .menu-item-home
      Cette classe est ajoutée aux éléments de menu qui correspondent à la première page du site.

    Compatibilité arrière avec WP_PAGE_MENU ()

    Les classes suivantes sont ajoutées pour maintenir la compatibilité en arrière avec le [[Function Reference/wp_page_menu|wp_page_menu()]] Sortie de fonction:

    • .page_item
      Cette classe est ajoutée aux éléments de menu qui correspondent à une page statique.
    • .page_item_has_children
      Cette classe est ajoutée aux éléments de menu qui ont des sous-pages.
    • .page-item-$ID
      Cette classe est ajoutée aux éléments de menu qui correspondent à une page statique, où $ id est l'ID de page statique.
    • .current_page_item
      Cette classe est ajoutée aux éléments de menu qui correspondent à la page statique actuellement rendue.
    • .current_page_parent
      Cette classe est ajoutée aux éléments de menu qui correspondent au parent hiérarchique de la page statique actuellement rendue.
    • .current_page_ancestor
      Cette classe est ajoutée aux éléments de menu qui correspondent à un ancêtre hiérarchique de la page statique actuellement rendue.
  • La source

    Dossier: WP-includes / nav-menu-template.php

    functionwp_nav_menu($args=array()){static$menu_id_slugs=array();$defaults=array('menu'=>'','container'=>'div','container_class'=>'','container_id'=>'','container_aria_label'=>'','menu_class'=>'menu','menu_id'=>'','echo'=>true,'fallback_cb'=>'wp_page_menu','before'=>'','after'=>'','link_before'=>'','link_after'=>'','items_wrap'=>'
      %3$s
    '
    ,'item_spacing'=>'preserve','depth'=>0,'walker'=>'','theme_location'=>'',);$args=wp_parse_args($args,$defaults);if(!in_array($args['item_spacing'],array('preserve','discard'),true)){// Invalid value, fall back to default.$args['item_spacing']=$defaults['item_spacing'];}/** * Filters the arguments used to display a navigation menu. * * @since 3.0.0 * * @see wp_nav_menu() * * @param array $args Array of wp_nav_menu() arguments. */$args=apply_filters('wp_nav_menu_args',$args);$args=(object)$args;/** * Filters whether to short-circuit the wp_nav_menu() output. * * Returning a non-null value from the filter will short-circuit wp_nav_menu(), * echoing that value if $args->echo is true, returning that value otherwise. * * @since 3.9.0 * * @see wp_nav_menu() * * @param string|null $output Nav menu output to short-circuit with. Default null. * @param stdClass $args An object containing wp_nav_menu() arguments. */$nav_menu=apply_filters('pre_wp_nav_menu',null,$args);if(null!==$nav_menu){if($args->echo){echo$nav_menu;return;}return$nav_menu;}// Get the nav menu based on the requested menu.$menu=wp_get_nav_menu_object($args->menu);// Get the nav menu based on the theme_location.$locations=get_nav_menu_locations();if(!$menu&&$args->theme_location&&$locations&&isset($locations[$args->theme_location])){$menu=wp_get_nav_menu_object($locations[$args->theme_location]);}// Get the first menu that has items if we still can't find a menu.if(!$menu&&!$args->theme_location){$menus=wp_get_nav_menus();foreach($menusas$menu_maybe){$menu_items=wp_get_nav_menu_items($menu_maybe->term_id,array('update_post_term_cache'=>false));if($menu_items){$menu=$menu_maybe;break;}}}if(empty($args->menu)){$args->menu=$menu;}// If the menu exists, get its items.if($menu&&!is_wp_error($menu)&&!isset($menu_items)){$menu_items=wp_get_nav_menu_items($menu->term_id,array('update_post_term_cache'=>false));}/* * If no menu was found: * - Fall back (if one was specified), or bail. * * If no menu items were found: * - Fall back, but only if no theme location was specified. * - Otherwise, bail. */if((!$menu||is_wp_error($menu)||(isset($menu_items)&&empty($menu_items)&&!$args->theme_location))&&isset($args->fallback_cb)&&$args->fallback_cb&&is_callable($args->fallback_cb)){returncall_user_func($args->fallback_cb,(array)$args);}if(!$menu||is_wp_error($menu)){returnfalse;}$nav_menu='';$items='';$show_container=false;if($args->container){/** * Filters the list of HTML tags that are valid for use as menu containers. * * @since 3.0.0 * * @param string[] $tags The acceptable HTML tags for use as menu containers. * Default is array containing 'div' and 'nav'. */$allowed_tags=apply_filters('wp_nav_menu_container_allowedtags',array('div','nav'));if(is_string($args->container)&&in_array($args->container,$allowed_tags,true)){$show_container=true;$class=$args->container_class?' class="'.esc_attr($args->container_class).'"':' class="menu-'.$menu->slug.'-container"';$id=$args->container_id?' id="'.esc_attr($args->container_id).'"':'';$aria_label=('nav'===$args->container&&$args->container_aria_label)?' aria-label="'.esc_attr($args->container_aria_label).'"':'';$nav_menu.='<'.$args->container.$id.$class.$aria_label.'>';}}// Set up the $menu_item variables._wp_menu_item_classes_by_context($menu_items);$sorted_menu_items=array();$menu_items_with_children=array();foreach((array)$menu_itemsas$menu_item){$sorted_menu_items[$menu_item->menu_order]=$menu_item;if($menu_item->menu_item_parent){$menu_items_with_children[$menu_item->menu_item_parent]=true;}}// Add the menu-item-has-children class where applicable.if($menu_items_with_children){foreach($sorted_menu_itemsas&$menu_item){if(isset($menu_items_with_children[$menu_item->ID])){$menu_item->classes[]='menu-item-has-children';}}}unset($menu_items,$menu_item);/** * Filters the sorted list of menu item objects before generating the menu's HTML. * * @since 3.1.0 * * @param array $sorted_menu_items The menu items, sorted by each menu item's menu order. * @param stdClass $args An object containing wp_nav_menu() arguments. */$sorted_menu_items=apply_filters('wp_nav_menu_objects',$sorted_menu_items,$args);$items.=walk_nav_menu_tree($sorted_menu_items,$args->depth,$args);unset($sorted_menu_items);// Attributes.if(!empty($args->menu_id)){$wrap_id=$args->menu_id;}else{$wrap_id='menu-'.$menu->slug;while(in_array($wrap_id,$menu_id_slugs,true)){if(preg_match('#-(d+)$#',$wrap_id,$matches)){$wrap_id=preg_replace('#-(d+)$#','-'.++$matches[1],$wrap_id);}else{$wrap_id=$wrap_id.'-1';}}}$menu_id_slugs[]=$wrap_id;$wrap_class=$args->menu_class?$args->menu_class:'';/** * Filters the HTML list content for navigation menus. * * @since 3.0.0 * * @see wp_nav_menu() * * @param string $items The HTML list content for the menu items. * @param stdClass $args An object containing wp_nav_menu() arguments. */$items=apply_filters('wp_nav_menu_items',$items,$args);/** * Filters the HTML list content for a specific navigation menu. * * @since 3.0.0 * * @see wp_nav_menu() * * @param string $items The HTML list content for the menu items. * @param stdClass $args An object containing wp_nav_menu() arguments. */$items=apply_filters("wp_nav_menu_{$menu->slug}_items",$items,$args);// Don't print any markup if there are no items at this point.if(empty($items)){returnfalse;}$nav_menu.=sprintf($args->items_wrap,esc_attr($wrap_id),esc_attr($wrap_class),$items);unset($items);if($show_container){$nav_menu.='.$args->container.'>';}/** * Filters the HTML content for navigation menus. * * @since 3.0.0 * * @see wp_nav_menu() * * @param string $nav_menu The HTML content for the navigation menu. * @param stdClass $args An object containing wp_nav_menu() arguments. */$nav_menu=apply_filters('wp_nav_menu',$nav_menu,$args);if($args->echo){echo$nav_menu;}else{return$nav_menu;}}

    Lié

    Les usages

    Les usages La description
    wp-includes / formatting.php: ESC_ATTR ()

    Échappement pour les attributs HTML.

    wp-includes / functions.php: wp_parse_args ()

    Merges les arguments définis par l'utilisateur dans le tableau par défaut.

    wp-includes / plugin.php: appliquer_filters ()

    Appelle les fonctions de rappel qui ont été ajoutées à un crochet filtrant.

    WP-includes / nav-menu-template.php: _wp_menu_item_classes_by_context ()

    Ajoute les classes de propriété de classe pour le contexte actuel, le cas échéant.

    WP-includes / nav-menu-template.php: walk_nav_menu_tree ()

    Récupère le contenu de la liste HTML pour les éléments du menu NAV.

    WP-includes / nav-menu-template.php: wp_nav_menu_args

    Filtre les arguments utilisés pour afficher un menu de navigation.

    WP-includes / nav-menu-template.php: pre_wp_nav_menu

    Filtres s'il faut court-circuiter la sortie WP_NAV_MENU ().

    WP-includes / nav-menu-template.php: WP_NAV_MENU_CONTAINER_ALLOWEDTAGS

    Filtre la liste des balises HTML valides pour une utilisation comme conteneurs de menu.

    WP-includes / nav-menu-template.php: wp_nav_menu_objects

    Filtre la liste triée des objets d'élément de menu avant de générer le HTML du menu.

    WP-includes / nav-menu-template.php: wp_nav_menu_items

    Filtre le contenu de la liste HTML pour les menus de navigation.

    WP-includes / nav-menu-template.php: wp_nav_menu _ {$ menu-> slug} _items

    Filtre le contenu de la liste HTML pour un menu de navigation spécifique.

    WP-includes / nav-menu-template.php: wp_nav_menu

    Filtre le contenu HTML pour les menus de navigation.

    WP-includes / nav-menu.php: wp_get_nav_menus ()

    Renvoie tous les objets de menu de navigation.

    WP-includes / nav-menu.php: wp_get_nav_menu_items ()

    Récupère tous les éléments du menu d'un menu de navigation.

    WP-includes / nav-menu.php: wp_get_nav_menu_object ()

    Renvoie un objet de menu de navigation.

    WP-includes / nav-menu.php: get_nav_menu_locations ()

    Récupère tous les emplacements de menu de navigation enregistrés et les menus qui leur sont attribués.

    wp-includes / load.php: is_wp_error ()

    Vérifie si la variable donnée est une erreur WordPress.

    Utilisé par

    Utilisé par La description
    wp-includes / class-wp-customalize-nav-menus.php: Wp_customalize_nav_menus :: render_nav_menu_partial ()

    Rendez un menu spécifique via WP_NAV_MENU () à l'aide des arguments fournis.

    WP-includes / widgets / class-wp-nav-menu-widget.php: Wp_nav_menu_widget :: widget ()

    Sort le contenu de l'instance de widget de menu de navigation en cours.

    Changelog

    Version La description
    5.5.0 Ajouté le container_aria_label dispute.
    4.7.0 Ajouté le item_spacing dispute.
    3.0.0 Introduit.