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 PAGEIDID 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.phpfile 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 $pageidmenurut:
global $wp_query;
$pageid = $wp_query->post->ID;
Ini memberi saya satu ID tetap untuk semua tautan yang dibuat.
Atau, alih-alih $pageidsaya mencoba menggunakan $item->ID, tetapi itu memberi saya ID dari item menu sebagai gantinya.
Ada saran?