我通过使用定制的助行器在此站点找到了解决方案。
分两个步骤:用已编辑的代码替换默认的wp_nav_menu代码,然后将代码添加到主题的functions.php中。
首先,将默认的wp_nav_code替换为以下代码(该代码是从上述站点复制的):
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())
);
接下来,将以下代码添加到functions.php中。通过这样做,您实际上可以将一个类添加到菜单链接:
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';
}
}
}
在代码的结尾,有几行以$ item_output开头。特别是,您需要看一下以下内容:
$item_output .= '<a'. $attributes .'>';
因为此行确定了链接html开头的输出。如果将其更改为以下内容:
$item_output .= '<a'. $attributes . 'class="abc"' .'>';
然后,菜单中的所有链接都将添加class =“ abc”。
也就是说,它不允许为每个链接使用自定义类(或者至少我不知道如何编写代码)。这对我来说是个问题。
对于那些问您为什么要这样做的人?我想让菜单链接打开灯箱(更具体地讲,颜色箱),并且它们需要链接上的类来执行此操作。例如:
<a class="lightbox1" href="#">Photo</a>
是否有可能动态生成类的方法,例如第一个链接的“ lightbox1”,第二个链接的“ lightbox2”等等?