为 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 中的特定页面自定义设置“当前菜单项”类的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress设置腾讯公益404页面

Symfony4加载类自定义文件夹时出错“预计找到类...但是找不到它”

php 添加自定义设置页面wp admin

UICollectionViewCell 中的 NSLayoutConstraint:尺寸类自定义不起作用

mutable.PriorityQueue 为具有更多属性的类自定义排序

模仿CountDownLatch类自定义倒时计时器