在 wp_nav_walker 菜单 WordPress 中显示菜单标签两次
Display menu label twice in wp_nav_walker menu 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。
创建新的 Class 并且您需要一个名为 start_el 的函数(您可以在 wp-includes/class-walker-nav-menu.php 中找到它)。最简单的方法就是全部复制。您需要更改 $item_output
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;
}
}
你可以提到锚标签和里面的$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 . '<span>' . $title . '</span>' . $args->link_after;
$item_output .= $args->link_before . '<span>' . $title . '</span>' . $args->link_after;
$item_output .= '</a>';
$item_output .= $args->after;
}
}
注意 $args->link_before/after 可以通过调用 wp_nav_menu 使用,不需要添加额外的跨度(我将在下面解释)。
第二种方式:有点棘手,但更简单,它会起作用。
像这样调用 wp_nav_menu:
wp_nav_menu(array(
'theme_location' => 'your_location',
'link_before' => '<span>', // This will wrap your title
'link_after' => '</span>',
));
在你的 functions.php
function add_double_span_to_menu( $item_output, $item, $depth, $args ){
// replace closing '</a>' with '<span>Links Title</span></a>'
$replace = $args->link_before . $item->title . $args->link_after . '</a>';
$item_output = str_replace('</a>', $replace, $item_output);
return $item_output;
}
add_filter('walker_nav_menu_start_el', 'add_double_span_to_menu', 10, 4);
我想在 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。 创建新的 Class 并且您需要一个名为 start_el 的函数(您可以在 wp-includes/class-walker-nav-menu.php 中找到它)。最简单的方法就是全部复制。您需要更改 $item_output
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;
}
}
你可以提到锚标签和里面的$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 . '<span>' . $title . '</span>' . $args->link_after;
$item_output .= $args->link_before . '<span>' . $title . '</span>' . $args->link_after;
$item_output .= '</a>';
$item_output .= $args->after;
}
}
注意 $args->link_before/after 可以通过调用 wp_nav_menu 使用,不需要添加额外的跨度(我将在下面解释)。
第二种方式:有点棘手,但更简单,它会起作用。 像这样调用 wp_nav_menu:
wp_nav_menu(array(
'theme_location' => 'your_location',
'link_before' => '<span>', // This will wrap your title
'link_after' => '</span>',
));
在你的 functions.php
function add_double_span_to_menu( $item_output, $item, $depth, $args ){
// replace closing '</a>' with '<span>Links Title</span></a>'
$replace = $args->link_before . $item->title . $args->link_after . '</a>';
$item_output = str_replace('</a>', $replace, $item_output);
return $item_output;
}
add_filter('walker_nav_menu_start_el', 'add_double_span_to_menu', 10, 4);