<?php
/**
* WP Bootstrap Navwalker
*
* @package WP-Bootstrap-Navwalker
*
* @wordpress-plugin
* Nombre del plugin: WP Bootstrap Navwalker
* URI del plugin: https://github.com/wp-bootstrap/wp-bootstrap-navwalker
* Descripción: Una clase de navegación personalizada de WordPress para implementar el estilo de navegación Bootstrap 4 en un tema personalizado utilizando el administrador de menús integrado en WordPress.
* Autor: Edward McIntyre – @twittem, WP Bootstrap, William Patton – @pattonwebz
* Versión: 4.3.0
* URI del autor: https://github.com/wp-bootstrap
* GitHub Plugin URI: https://github.com/wp-bootstrap/wp-bootstrap-navwalker
* Rama de GitHub: maestro
* Licencia: GPL-3.0+
* URI de licencia: http://www.gnu.org/licenses/gpl-3.0.txt
*/
Compruebe si existe la clase.
if ( ! class_exists( ‘WP_Bootstrap_Navwalker’ ) ) {
/**
* WP_Bootstrap_Navwalker clase.
*
* @extends Walker_Nav_Menu
*/
la WP_Bootstrap_Navwalker de clase extiende Walker_Nav_Menu {
/**
* Inicia la lista antes de que se agreguen los elementos.
*
* @since WP 3.0.0
*
* @see Walker_Nav_Menu::start_lvl()
*
* @param cadena $output Se utiliza para anexar contenido adicional (pasado por referencia).
* @param int $depth Profundidad del elemento de menú. Se utiliza para el acolchado.
* @param stdClass $args Objeto de argumentos wp_nav_menu().
*/
función pública start_lvl( &$output, $depth = 0, $args = array() ) {
if ( isset( $args->item_spacing ) && ‘discard’ === $args->item_spacing ) {
$t = »;
$n = »;
} else {
$t = «t»;
$n = «n»;
}
$indent = str_repeat( $t, $depth );
Clase predeterminada para agregar al archivo.
$classes = array( ‘menú desplegable’ );
/**
* Filtra la(s) clase(s) CSS aplicada(s) a un elemento de lista de menús.
*
* @since WP 4.8.0
*
* @param matriz $classes Las clases CSS que se aplican al elemento ‘<ul>’ del menú.
* @param stdClass $args Objeto de los argumentos ‘wp_nav_menu()’.
* @param int $depth Profundidad del elemento de menú. Se utiliza para el acolchado.
*/
$class_names = join( ‘ ‘, apply_filters( ‘nav_menu_submenu_css_class’, $classes, $args, $depth ) );
$class_nombres = nombres_$class ? ‘ class=»‘ . esc_attr( nombres_$class ) . ‘»‘ : »;
/*
* El contenedor ‘.dropdown-menu’ debe tener una etiqueta
* atributo que apunta a su enlace de disparo.
*
* Formar una cadena para el atributo labelledby a partir de la última
* enlace con un identificador que se agregó al $output.
*/
$labelledby = »;
Busque todos los enlaces con un identificador en la salida.
preg_match_all( ‘/(<a.*?id=»|’)(.*?) «|’.*?>/im’, $output, $matches );
Con el puntero al final de la matriz, verifique si obtuvimos una coincidencia de ID.
if ( end( $matches[2] ) ) {
Cree una cadena para usarla como aria-labelledby.
$labelledby = ‘aria-labelledby=»‘ . esc_attr( end( $matches[2] ) . ‘»‘;
}
$output .= «{$n}{$indent}<ul$class_names $labelledby role=»menu»>{$n}»;
}
/**
* Inicia la salida del elemento.
*
* @since WP 3.0.0
* @since WP 4.4.0 Se agregó el filtro {@see ‘nav_menu_item_args’}.
*
* @see Walker_Nav_Menu::start_el()