我在一个wordpress博客中建立了一个导航。项目显示如下:
该图标通过使用引导类glyhicon-glyphiconname
应用。我动态地添加类。PHP代码:
function add_specific_menu_location_atts( $atts, $item, $args ) {
// check if the item is in the primary menu
if( $args->theme_location == 'directentries' ) {
foreach($item as $key => $value) {
if($key == 'title') {
$catIcon = setCatIcon($value);
}
}
// add the desired attributes:
$atts['class'] = 'btn btn-primary btn-lg glyphicon glyphicon-'.$catIcon;
}
return $atts;
}
add_filter( 'nav_menu_link_attributes', 'add_specific_menu_location_atts', 10, 3 );
$args = array(
'theme_location' => 'directentries',
'depth' => 1,
'container' => false,
'menu_class' => 'nav',
'link_before' => '<br>',
//'link_before' => 'span class"glyphicon"',
'walker' => ''
);
wp_nav_menu($args);
这里的问题是,链接文本的字体(当然)是glyicon,否则图标将不适用于链接。所以:正确的方法是在初始化菜单时使用link-before参数应用span。但是我需要将我的动态类名应用到span上。我想我可以使用$args参数访问过滤器类中的link_before参数。
当前的标记是这样的:
我需要它是这样的:
有没有人知道如何应用一个跨度和不同的类?
.
3条答案
按热度按时间ajsxfq5m1#
1.先将下面的代码添加到您的functions.php中。
2.将下面的代码添加到安装wp_nav_menu的header.php中。
下面解释的是代码,所以它安装新的自定义菜单,在这种情况下将是
Nav_Walker_Nav_Menu
。vngu2lb82#
虽然自定义导航步行者类可能是一个很好的(更好?)解决方案作为@Trix建议,我想回答这个问题如何应用一个跨度使用我的过滤器。这段代码做到了:
ohtdti5x3#
这里是我所做的,并修改了答案,以获得字段“CSS Classes(optional)"的值。它更有用的代码,因为目前的答案是获取“导航标签”字段的值,有时我们需要一个动态的图标自定义类。
我是如何做到这一点的-将数组转换为字符串,因为我们知道字符串将获得所有CSS类,所以使用
strtok
函数从字符串中获得第一个类。当我们添加一个自定义类到字段“CSS Classes(optional)"时,它总是出现在数组的第一个单词。