Muestra un menú de navegación.
Parámetros
- $ args
-
(formación) (Opcional) Matriz de argumentos del menú de navegación.
-
‘menú’
(int | cadena | WP_Term) Menú deseado. Acepta un ID de menú, slug, nombre u objeto. -
‘menu_class’
(cuerda) Clase CSS que se utilizará para el elemento ul que forma el menú. ‘Menú’ predeterminado. -
‘menu_id’
(cuerda) El ID que se aplica al elemento ul que forma el menú. El valor predeterminado es el menú slug, incrementado. -
‘envase’
(cuerda) Si envolver el ul y con qué envolverlo. ‘Div’ predeterminado. -
‘clase_contenedor’
(cuerda) Clase que se aplica al contenedor. Por defecto ‘menu- {menu slug} -container’. -
‘container_id’
(cuerda) El ID que se aplica al contenedor. -
‘container_aria_label’
(cuerda) El atributo aria-label que se aplica al contenedor cuando es un elemento de navegación. -
‘fallback_cb’
(invocable | falso) Si el menú no existe, se activará una función de devolución de llamada. El valor predeterminado es “https://foroayuda.es/wordpress/functions/wp_page_menu”. Configúrelo en falso para que no haya retroceso. -
‘antes de’
(cuerda) Texto antes del marcado del enlace. -
‘después’
(cuerda) Texto después del marcado del enlace. -
‘link_before’
(cuerda) Texto antes del texto del enlace. -
‘link_after’
(cuerda) Texto después del texto del enlace. -
‘eco’
(bool) Ya sea para hacer eco del menú o devolverlo. Verdadero por defecto. -
‘profundidad’
(En t) Cuántos niveles de la jerarquía se incluirán. 0 significa todos. Por defecto 0. Por defecto 0. -
‘caminante’
(objeto) Instancia de una clase de caminante personalizada. -
‘ubicación_tema’
(cuerda) Ubicación del tema que se utilizará. Debe estar registrado con register_nav_menu () para que el usuario pueda seleccionarlo. -
‘items_wrap’
(cuerda) Cómo se deben envolver los elementos de la lista. Utiliza el formato printf () con marcadores de posición numerados. El valor predeterminado es un ul con una identificación y una clase. -
‘item_spacing’
(cuerda) Ya sea para conservar los espacios en blanco dentro del HTML del menú. Acepta ‘conservar’ o ‘descartar’. Por defecto ‘preservar’.
Valor predeterminado: array ()
-
‘menú’
Regreso
(vacío | cadena | falso) No válido si el argumento ‘echo’ es verdadero, la salida del menú si ‘echo’ es falso. Falso si no hay elementos o no se encontró ningún menú.
Más información
Uso
wp_nav_menu( $args );
Dado un ubicación_tema parámetro, la función muestra el menú asignado a esa ubicación. Si no existe tal ubicación o no se le asigna ningún menú, el parámetro fallback_cb determinará lo que se muestra.
Si no se le da un ubicación_tema parámetro, la función muestra
- el menú que coincide con el ID, slug o nombre dado por el menú parámetro;
- de lo contrario, el primer menú no vacío;
- de lo contrario (o si el menú dado por menú está vacío), salida de la función dada por el fallback_cb parámetro (wp_page_menu (), por defecto);
- de lo contrario, nada.
Clases de CSS de elementos de menú
Las siguientes clases se aplican a los elementos del menú, es decir, al HTML
wp_nav_menu()
:
Todos los elementos del menú
-
.menu-item
Esta clase se agrega a cada elemento del menú. -
.menu-item-has-children
Esta clase se agrega al elemento del menú que tiene subelementos. -
.menu-item-object-{object}
Esta clase se agrega a cada elemento del menú, donde {objeto} es un tipo de publicación o una taxonomía. -
.menu-item-object-category
Esta clase se agrega a los elementos del menú que corresponden a una categoría. -
.menu-item-object-tag
Esta clase se agrega a los elementos del menú que corresponden a una etiqueta. -
.menu-item-object-page
Esta clase se agrega a los elementos del menú que corresponden a páginas estáticas. -
.menu-item-object-{custom}
Esta clase se agrega a los elementos del menú que corresponden a un tipo de publicación personalizada o una taxonomía personalizada. -
.menu-item-type-{type}
Esta clase se agrega a cada elemento del menú, donde {tipo} es “post_type” o “taxonomía”. -
.menu-item-type-post_type
Esta clase se agrega a los elementos del menú que corresponden a los tipos de publicaciones: es decir, páginas estáticas o tipos de publicaciones personalizadas. -
.menu-item-type-taxonomy
Esta clase se agrega a los elementos del menú que corresponden a taxonomías: es decir, categorías, etiquetas o taxonomías personalizadas.
Elementos del menú de la página actual
-
.current-menu-item
Esta clase se agrega a los elementos del menú que corresponden a la página renderizada actualmente.
Elementos del menú principal de la página actual
-
.current-menu-parent
Esta clase se agrega a los elementos del menú que corresponden al padre jerárquico de la página actualmente renderizada. -
.current-{object}-parent
Esta clase se agrega a los elementos del menú que corresponden al padre jerárquico del objeto actualmente renderizado, donde {objeto} corresponde al valor usado para .menu-item-object- {object}. -
.current-{type}-parent
Esta clase se agrega a los elementos del menú que corresponden al padre jerárquico del tipo actualmente renderizado, donde {tipo} corresponde al valor usado para .menu-item-type- {type}.
Elementos del menú del antepasado de la página actual
-
.current-menu-ancestor
Esta clase se agrega a los elementos del menú que corresponden a un antepasado jerárquico de la página actualmente renderizada. -
.current-{object}-ancestor
Esta clase se agrega a los elementos del menú que corresponden a un antepasado jerárquico del objeto actualmente renderizado, donde {objeto} corresponde al valor usado para .menu-item-object- {object}. -
.current-{type}-ancestor
Esta clase se agrega a los elementos del menú que corresponden a un antepasado jerárquico del tipo actualmente renderizado, donde {tipo} corresponde al valor usado para .menu-item-type- {type}.
Elementos del menú de la página principal del sitio
-
.menu-item-home
Esta clase se agrega a los elementos del menú que corresponden a la página principal del sitio.
Compatibilidad con versiones anteriores de wp_page_menu ()
Las siguientes clases se agregan para mantener la compatibilidad con versiones anteriores [[Function Reference/wp_page_menu|wp_page_menu()]]función de salida:
-
.page_item
Esta clase se agrega a los elementos del menú que corresponden a una página estática. -
.page_item_has_children
Esta clase se agrega a los elementos del menú que tienen subpáginas. -
.page-item-$ID
Esta clase se agrega a los elementos del menú que corresponden a una página estática, donde $ ID es el ID de la página estática. -
.current_page_item
Esta clase se agrega a los elementos del menú que corresponden a la página estática actualmente renderizada. -
.current_page_parent
Esta clase se agrega a los elementos del menú que corresponden al padre jerárquico de la página estática actualmente renderizada. -
.current_page_ancestor
Esta clase se agrega a los elementos del menú que corresponden a un antepasado jerárquico de la página estática actualmente renderizada.
Fuente
Expediente: wp-includes / nav-menu-template.php
function wp_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' => "https://foroayuda.es/wordpress/functions/wp_page_menu", 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '<ul>%3$s</ul>', '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 ( $menus as $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 ) ) { return call_user_func( $args->fallback_cb, (array) $args ); } if ( ! $menu || is_wp_error( $menu ) ) { return false; } $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_items as $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_items as &$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 ) ) { return false; } $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( "https://foroayuda.es/wordpress/functions/wp_nav_menu", $nav_menu, $args ); if ( $args->echo ) { echo $nav_menu; } else { return $nav_menu; } }
Relacionado
Usos
Usos | Descripción |
---|---|
wp-includes / formatting.php: esc_attr () |
Escapar de atributos HTML. |
wp-includes / functions.php: wp_parse_args () |
Fusiona argumentos definidos por el usuario en una matriz predeterminada. |
wp-includes / plugin.php: aplicar_filtros () |
Llama a las funciones de devolución de llamada que se han agregado a un enlace de filtro. |
wp-includes / nav-menu-template.php: _wp_menu_item_classes_by_context () |
Agrega las clases de propiedad de clase para el contexto actual, si corresponde. |
wp-includes / nav-menu-template.php: walk_nav_menu_tree () |
Recupera el contenido de la lista HTML para los elementos del menú de navegación. |
wp-includes / nav-menu-template.php: wp_nav_menu_args |
Filtra los argumentos utilizados para mostrar un menú de navegación. |
wp-includes / nav-menu-template.php: pre_wp_nav_menu |
Filtra si se debe cortocircuitar la salida wp_nav_menu (). |
wp-includes / nav-menu-template.php: wp_nav_menu_container_allowedtags |
Filtra la lista de etiquetas HTML que son válidas para su uso como contenedores de menú. |
wp-includes / nav-menu-template.php: wp_nav_menu_objects |
Filtra la lista ordenada de objetos de elementos de menú antes de generar el HTML del menú. |
wp-includes / nav-menu-template.php: wp_nav_menu_items |
Filtra el contenido de la lista HTML para los menús de navegación. |
wp-includes / nav-menu-template.php: wp_nav_menu _ {$ menu-> slug} _items |
Filtra el contenido de la lista HTML para un menú de navegación específico. |
wp-includes / nav-menu-template.php: wp_nav_menu |
Filtra el contenido HTML para los menús de navegación. |
wp-includes / nav-menu.php: wp_get_nav_menus () |
Devuelve todos los objetos del menú de navegación. |
wp-includes / nav-menu.php: wp_get_nav_menu_items () |
Recupera todos los elementos del menú de un menú de navegación. |
wp-includes / nav-menu.php: wp_get_nav_menu_object () |
Devuelve un objeto de menú de navegación. |
wp-includes / nav-menu.php: get_nav_menu_locations () |
Recupera todas las ubicaciones de los menús de navegación registrados y los menús asignados a ellos. |
wp-includes / load.php: is_wp_error () |
Comprueba si la variable dada es un error de WordPress. |
Usado por
Usado por | Descripción |
---|---|
wp-includes / class-wp-personalizar-nav-menus.php: WP_Customize_Nav_Menus :: render_nav_menu_partial () |
Renderice un menú específico a través de wp_nav_menu () usando los argumentos proporcionados. |
wp-includes / widgets / class-wp-nav-menu-widget.php: WP_Nav_Menu_Widget :: widget () |
Genera el contenido de la instancia actual del widget del menú de navegación. |
Registro de cambios
Versión | Descripción |
---|---|
5.5.0 | Agregó el container_aria_label argumento. |
4.7.0 | Agregó el item_spacing argumento. |
3.0.0 | Introducido. |