WordPress开发 – 遍历获取菜单列表(itemsList)并且获取菜单子项名(item_name)
写在前面今天开发首页菜单的时候,需要在指定的页面和指定的菜单添加a标签的class名,但是走了好多弯路,然后最…
写在前面
今天开发首页菜单的时候,需要在指定的页面和指定的菜单添加a标签的class名,
但是走了好多弯路,然后最终实现的时候,也不知道该怎么写这个文章?因为感觉只有我自己有这种需求。
比如我要在 一个页面名叫“咕咕咕” 而且菜单item名叫 咕噜球 我才给他active 否则不给。
想想还是写一个遍历获取菜单列表(itemsList)吧,英文文档看多了,中文写起来竟然不知道如何组织语言了。
教程开始
在 functions.php 页面添加以下代码。记得适当的修改,仅提供思路~
functions
//更改li a样式
function baolog_menu_link_class($atts, $item, $args)
{
$menu_name = 'menu_index';
//menu_index是你注册的导航名字
if ($args->theme_location == $menu_name) {
//获取导航id
$menuLocations = get_nav_menu_locations();
$menuID = $menuLocations[$menu_name];
//获取当前导航名
$id = $item->ID;//当前所遍历到的item(这里的item不能直接获取名字)
$primaryNav = wp_get_nav_menu_items($menuID);
$class = 'nav-link';//默认样式名
//重新利用 wp_get_nav_menu_items()函数遍历当前菜单
foreach ($primaryNav as $navItem) {
//获取菜单item名
$item_name = $navItem->title;
//可以做一些其他的验证 比如我需要的就是下面
if ($navItem->ID == $id) {//利用id反查出item的名字
//可以判断is_page('页面名')||$item_name=="咕噜球"
if (is_page('咕咕咕')) {
if ($item_name == "咕噜球") {
$class .= ' active';//追加样式
}
}
}
}
$atts['class'] = $class;
}
return $atts;
}
add_filter('nav_menu_link_attributes', 'baolog_menu_link_class', 1, 3);
写在后面
不知道讲的是否有点迷糊了,大概的思路就是这样子吧~不懂的函数可以谷歌官方查一下。
类别:WordPress开发、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
admin 本文作者
评论参数
admin 本文作者
评论参数1
admin 本文作者
评论测试2
admin 本文作者
评论测试3