Saat ini saya menggunakan walker khusus untuk menyesuaikan output wp_nav_menu()
, dan saya mencoba menambahkan informasi tambahan ke <a>
tag.
Apa yang saya ingin output untuk setiap tautan menu terlihat seperti:
<a class="boxPAGEID" href="#">About Me Page</a>
Di mana PAGEID
ID halaman yang saya tautkan.
Alasannya adalah karena saya mengembangkan tema yang membuka konten halaman di lightbox, yang dipicu oleh kelas dalam tag.
Di bawah ini adalah kode custom walker di functions.php
file saya (setelah kode saya akan menunjuk ke area di mana saya mengalami masalah):
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';
}
}
}
Menjelang akhir adalah beberapa garis yang dimulai dengan $item_output
. Baris kedua adalah tempat saya mencoba membuat ID halaman:
$item_output .= '<a'. $attributes . 'class="box' . $pageid . '"' .'>';
Di mana $pageid
menurut:
global $wp_query;
$pageid = $wp_query->post->ID;
Ini memberi saya satu ID tetap untuk semua tautan yang dibuat.
Atau, alih-alih $pageid
saya mencoba menggunakan $item->ID
, tetapi itu memberi saya ID dari item menu sebagai gantinya.
Ada saran?