为 WP 中的特定页面自定义设置“当前菜单项”类
Posted
技术标签:
【中文标题】为 WP 中的特定页面自定义设置“当前菜单项”类【英文标题】:Custom set "current-menu-item" class for specific pages in WP 【发布时间】:2014-01-28 00:45:52 【问题描述】:我正在创建自定义 WP 主题,并且正在使用 Wordpress 导航栏。在不同页面之间切换时,WP 会在导航栏中添加一个“current-menu-item”类来链接当前页面。
但是,如果导航栏中不存在该页面/帖子,则不会将“当前菜单项”添加到任何导航栏项目。
我的问题是,当用户访问“BLOG”页面(实际上是一个类别页面)并单击打开 single.php 模板的某个帖子时,我希望导航栏项目“BLOG”被加下划线就像访问者正在访问博客页面一样。
有时我希望在登陆 SINGLE 时为另一个导航栏项目加下划线,具体取决于用户来自哪里(我也有主页帖子,然后我希望 HOME 加下划线)
我该如何做到这一点?谢谢。
【问题讨论】:
【参考方案1】:您可以使用过滤器并使用条件语句检查您当前所在的页面,并在菜单显示之前添加类:
function add_custom_classes($classes, $item)
if(is_single() && $item->title == 'BLOG')
$classes[] = 'current-menu-item';
return $classes;
add_filter('nav_menu_css_class' , 'add_custom_classes' , 10 , 2);
【讨论】:
适用于所有单个帖子,但我希望一些单个帖子位于“主页”下,其他帖子位于“博客”下,具体取决于该帖子的父类别。 那么你需要使用get_the_category()
函数和$item->ID变量
我试过 if(is_single() && get_the_category($item->ID) == 14) -> 14 是博客的类别 ID,但它似乎不起作用
那是因为get_the_category()
不返回值,而是返回一个数组。 WordPress 有 codex 的功能,非常有用:codex.wordpress.org/Function_Reference/get_the_category。你需要写 $category = get_the_category($item->ID);然后使用 $category->term_id == 14
好的,写了 $category = get_the_category($item->ID); if(is_single() && $category->term_id == 14) 但仍然没有效果。回显 $item->ID 总共给了我 13 位数字以上是关于为 WP 中的特定页面自定义设置“当前菜单项”类的主要内容,如果未能解决你的问题,请参考以下文章
Symfony4加载类自定义文件夹时出错“预计找到类...但是找不到它”
UICollectionViewCell 中的 NSLayoutConstraint:尺寸类自定义不起作用