Ich verwende derzeit einen benutzerdefinierten Walker, um die Ausgabe von anzupassen wp_nav_menu()
, und ich versuche, den <a>
Tags zusätzliche Informationen hinzuzufügen .
Ich möchte, dass die Ausgabe für jeden Menülink wie folgt aussieht:
<a class="boxPAGEID" href="#">About Me Page</a>
Wo PAGEID
ist die ID der Seite, auf die ich verlinke?
Der Grund dafür ist, dass ich ein Thema entwickle, das Seiteninhalte in Leuchtkästen öffnet, die von der Klasse im Tag ausgelöst werden.
Unten ist der Code des benutzerdefinierten Walkers in meiner functions.php
Datei (nach dem Code zeige ich auf den Bereich, in dem ich Probleme habe):
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';
}
}
}
Gegen Ende stehen ein paar Zeilen, die mit beginnen $item_output
. In der zweiten Zeile versuche ich, die Seiten-ID zu generieren:
$item_output .= '<a'. $attributes . 'class="box' . $pageid . '"' .'>';
Wo $pageid
ist nach:
global $wp_query;
$pageid = $wp_query->post->ID;
Dies gibt mir eine einzige feste ID für alle generierten Links.
Alternativ, anstatt $pageid
ich es zu versuchen $item->ID
, gab mir das stattdessen die ID des Menüpunkts.
Irgendwelche Vorschläge?