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 PAGEIDestá 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.phparchivo (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 $pageidestá 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 $pageidintentar usarlo $item->ID, pero eso me dio la ID del elemento del menú.
¿Alguna sugerencia?