如何解决在wp_nav_walker菜单WordPress中两次显示菜单标签
我想在wordpress菜单中包含两个<span>
标签,如下面的代码所示:
<ul>
<li><a href="#!"><span>Home</span><span>Home</span></a></li>
<li><a href="#!"><span>About</span><span>About</span></a></li>
<li><a href="#!"><span>Contact</span><span>Contact</span></a></li>
</ul>
解决方法
首先,您可以使用Walker。 创建新的类,您需要一个名为start_el的函数(可以在wp-includes / class-walker-nav-menu.php中找到它)。最简单的方法就是复制所有内容。您需要更改$ item_output
type Homogenous[H] = [T <: Tuple] =>> T match {
case EmptyTuple => DummyImplicit
case H *: t => Homogenous[H][t]
case _ => Nothing
}
您可以提及锚标记及其内的$ title(链接标题)。您可以将$ title换成span并将其加倍,像这样:
class Your_Walker extends Walker_Nav_Menu {
public function start_el( &$output,$item,$depth = 0,$args = null,$id = 0 ) {
// Code here
$item_output = $args->before;
$item_output .= '<a' . $attributes . '>';
$item_output .= $args->link_before . $title . $args->link_after;
$item_output .= '</a>';
$item_output .= $args->after;
}
}
注意$ args-> link_before / after可以通过调用wp_nav_menu来使用,并且不需要添加额外的跨度(我将在下面解释)。
第二种方式:有点棘手,但更简单,它将起作用。 像这样调用wp_nav_menu:
class Your_Walker extends Walker_Nav_Menu {
public function start_el( &$output,$id = 0 ) {
// Code here
$item_output = $args->before;
$item_output .= '<a' . $attributes . '>';
$item_output .= $args->link_before . '<span>' . $title . '</span>' . $args->link_after;
$item_output .= $args->link_before . '<span>' . $title . '</span>' . $args->link_after;
$item_output .= '</a>';
$item_output .= $args->after;
}
}
在您的functions.php中
wp_nav_menu(array(
'theme_location' => 'your_location','link_before' => '<span>',// This will wrap your title
'link_after' => '</span>',));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。