Saya menemukan solusi di situs ini melalui penggunaan alat bantu jalan khusus .
Dua langkah: ganti kode wp_nav_menu default dengan yang diedit, dan kemudian tambahkan kode ke functions.php dari tema.
Pertama, ganti wp_nav_code default dengan yang berikut ini (kode disalin dari situs di atas):
wp_nav_menu( array(
'menu' => 'Main Menu',
'container' => false,
'menu_class' => 'nav',
'echo' => true,
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'depth' => 0,
'walker' => new description_walker())
);
Selanjutnya, tambahkan kode berikut ke functions.php. Dengan melakukan ini, Anda sebenarnya dapat menambahkan kelas ke tautan menu:
class description_walker extends Walker_Nav_Menu
{
function start_el(&$output, $item, $depth, $args)
{
global $wp_query;
$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="' . esc_attr( $item->url ) .'"' : '';
$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 .'>';
$item_output .= $args->link_before .$prepend.apply_filters( 'the_title', $item->title, $item->ID ).$append;
$item_output .= $description.$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 kode ada beberapa baris yang dimulai dengan $ item_output. Secara khusus, Anda ingin melihat bagian ini:
$item_output .= '<a'. $attributes .'>';
Karena baris ini menentukan output untuk awal tautan html. Jika Anda mengubahnya menjadi seperti ini:
$item_output .= '<a'. $attributes . 'class="abc"' .'>';
Maka semua tautan Anda di menu akan ditambahkan class = "abc".
Yang mengatakan, itu tidak memungkinkan kelas khusus untuk setiap tautan (atau setidaknya saya tidak tahu bagaimana kode itu). Ini masalah bagi saya.
Bagi mereka yang bertanya mengapa Anda ingin melakukan ini? Saya ingin memiliki tautan menu saya membuka lightbox (kotak warna, untuk lebih spesifik), dan mereka memerlukan kelas pada tautan untuk melakukan itu. Sebagai contoh:
<a class="lightbox1" href="#">Photo</a>
Apakah mungkin ada cara untuk menghasilkan kelas secara dinamis, seperti "lightbox1" untuk tautan pertama, "lightbox2" untuk tautan kedua, dan seterusnya?