Valores Humanos
class-wp-bootstrap-navwalker.php

<?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()