La manera en que WordPress pasa por las páginas del menú para mostrar los elementos, está utilizando un objeto andador. En este caso, la clase específica para este objeto se llama Walker_Nav_Menu. Puede encontrarlo en wp-includes\nav-menu-template.php
.
El Walker_Nav_Menu
es una clase bastante simple. Puede ver cómo se crean allí los enlaces y la estructura del menú. Las funciones start_el
y end_el
se utilizan para crear los elementos del menú. Las funciones start_lvl
y end_lvl
son para anidar menús. En este enfoque, utilizaremos principalmente start_el
y end_el
.
En su functions.php
crear una clase, para extender Walker_Nav_Menu
con métodos muy similares a la clase padre:
class Custom_Walker_Nav_Menu extends Walker_Nav_Menu {
function start_el (&$output, $item, $depth = 0, $args = array(), $id = 0) {
// Copy all the start_el code from source, and modify
}
function end_el(&$output, $item, $depth = 0, $args = array()) {
// Copy all the end_el code from source, and modify
}
}
En esas funciones, el $item
es su elemento de menú, con la que se pueden consultar los contenidos adicionales de acuerdo al elemento de menú actual, si lo desea. Tenga en cuenta que no incluí start_lvl
y end_lvl
, pero eso no importa, ya que su clase heredará automáticamente los métodos de clases principales, si no se sobrescribe.
Luego, en sus archivos del tema, puede llamar wp_nav_menu así:
wp_nav_menu(array(
'theme_location' => 'main',
'container' => false,
'menu_id' => 'nav',
'depth' => 1,
// This one is the important part:
'walker' => new Custom_Walker_Nav_Menu
));
WordPress utilizará su clase y las funciones personalizadas, por lo que se pueden modificar lo que el código es la salida.
Descubrí cómo hacer esto con un código mucho menor que el uso de un andador personalizado: http://stackoverflow.com/questions/26079190/add-featured-image-to-wp-nav-menu-items/26079191 –
cómo saber la diferencia bweteen top level headin y otro título? desea eliminar la etiqueta de los elementos de nivel superior solamente ... –