Actualmente estoy usando un andador personalizado para personalizar la salida de wp_nav_menu()
, y estoy tratando de agregar información adicional a las <a>
etiquetas.
Lo que quiero es que se vea el resultado de cada enlace de menú:
<a class="boxPAGEID" href="#">About Me Page</a>
¿Dónde PAGEID
está la identificación de la página a la que estoy enlazando?
La razón es porque estoy desarrollando un tema que abre el contenido de la página en cajas de luz, que son activadas por la clase en la etiqueta.
A continuación se muestra el código del andador personalizado en mi functions.php
archivo (después del código señalaré el área donde tengo problemas):
class description_walker extends Walker_Nav_Menu
{
function start_el(&$output, $item, $depth, $args)
{
global $wp_query;
$pageid = $wp_query->post->ID;
$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
$class_names = $value = '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
$class_names = ' class="'. esc_attr( $class_names ) . '"';
$output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'>';
$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : '';
$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : '';
$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : '';
$attributes .= ! empty( $item->url ) ? ' href="' . '#' .'"' : '';
$prepend = '<strong>';
$append = '</strong>';
$description = ! empty( $item->description ) ? '<span>'.esc_attr( $item->description ).'</span>' : '';
if($depth != 0)
{
$description = $append = $prepend = "";
}
$item_output = $args->before;
$item_output .= '<a'. $attributes . 'class="box' . $pageid . '"' .'>';
$item_output .= $args->link_before .$prepend.apply_filters( 'the_title', $item->title, $item->ID ).$append;
$item_output .= $args->link_after;
$item_output .= '</a>';
$item_output .= $args->after;
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
if ($item->menu_order == 1) {
$classes[] = 'first';
}
}
}
Hacia el final hay un par de líneas que comienzan con $item_output
. La segunda línea es donde estoy tratando de generar la ID de la página:
$item_output .= '<a'. $attributes . 'class="box' . $pageid . '"' .'>';
¿Dónde $pageid
está de acuerdo con:
global $wp_query;
$pageid = $wp_query->post->ID;
Esto me da una identificación única y fija para todos los enlaces generados.
Alternativamente, en lugar de $pageid
intentar usarlo $item->ID
, pero eso me dio la ID del elemento del menú.
¿Alguna sugerencia?