start_el()
debería obtener esta información en su $args
parámetro, pero parece que WordPress solo completa esto si $args
es una matriz , mientras que para los menús de navegación personalizados es un objeto. Esto se informa en un boleto de Trac . Pero no hay problema, puede completar esto usted mismo, si también anula el display_element()
método en su andador personalizado (porque este es el lugar más fácil para acceder a la matriz de elementos secundarios):
class WPSE16818_Walker extends Walker_Nav_Menu
{
function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output )
{
$id_field = $this->db_fields['id'];
if ( is_object( $args[0] ) ) {
$args[0]->has_children = ! empty( $children_elements[$element->$id_field] );
}
return parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
}
function start_el( &$output, $item, $depth, $args ) {
if ( $args->has_children ) {
// ...
}
}
Actualización: a partir de WordPress 3.7 (octubre de 2013), se han agregado clases CSS para indicar elementos de menú secundarios y páginas en menús temáticos; no es necesario usar un andador personalizado, ya que se ocupa en el núcleo de WordPress.
Las clases CSS se nombran
menu-item-has-children
ypage_item_has_children
.Para obtener una solución completa para cualquier persona que tenga prisa (crédito a la respuesta anterior de Jan Fabry), consulte la implementación completa a continuación.
Imprima la navegación en la plantilla de su tema:
Luego, incluya lo siguiente en su tema
functions.php
:El resultado HTML resultante será similar al siguiente:
Para obtener más información sobre el uso de la clase de caminante de WordPress, consulte Comprender la clase de caminante .
¡Disfrutar!
fuente
Esta función es exactamente lo que quieres tener. También le muestra una forma bastante efectiva de modificar los elementos del menú de navegación. Además, puede abrirlo para funciones más avanzadas (por ejemplo, tema secundario) a través del filtro de elementos:
Y sí, en casi todos los casos no hay necesidad de un andador personalizado.
fuente
si desea hacer desplegable, puede hacerlo solo con CSS. hacer una navegación personalizada en WP con niños, WordPress asigna automáticamente la clase .sub-menu al niño ul. Prueba este CSS
Es posible que desee agregar un poco de jQuery para darle un poco de sabor, pero esto debería darle un menú desplegable que funcione.
fuente
fuente