Bu sitede özel bir yürüteç kullanarak bir çözüm buldum .
İki adım: varsayılan wp_nav_menu kodunu düzenlenmiş bir kodla değiştirin ve ardından temanın function.php dosyasına kod ekleyin.
İlk olarak, varsayılan wp_nav_code'u aşağıdaki ile değiştirin (kod yukarıdaki siteden kopyalanır):
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())
);
Ardından, function.php dosyasına aşağıdaki kodu ekleyin. Bunu yaparak aslında menü bağlantılarına bir sınıf ekleyebilirsiniz:
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';
}
}
}
Kodun sonuna doğru $ item_output ile başlayan birkaç satır vardır. Özellikle, bu parçaya bakmak istiyorsunuz:
$item_output .= '<a'. $attributes .'>';
Çünkü bu satır, html bağlantısının başlangıcı için çıktıyı belirler. Bunu böyle bir şeye değiştirirseniz:
$item_output .= '<a'. $attributes . 'class="abc"' .'>';
Ardından menüdeki tüm bağlantılarınıza class = "abc" eklenir.
Bununla birlikte, her bağlantı için özel bir sınıfa izin vermiyor (veya en azından nasıl kodlayacağımı bilmiyorum). Bu benim için bir mesele.
Bunu neden yapmak isteyenler için? Benim menü bağlantıları açık kutuları (daha spesifik olmak için, renk kutuları) açmak istiyorum ve bunu yapmak için bağlantıları sınıflar gerektirir. Örneğin:
<a class="lightbox1" href="#">Photo</a>
Sınıfları dinamik olarak oluşturmanın, örneğin birinci bağlantı için "lightbox1", ikinci bağlantı için "lightbox2" gibi bir yolu var mı?