当前位置: 首页 > 知识库问答 >
问题:

我如何覆盖Wordpress'确定的默认方式。当前菜单项类?

范稳
2023-03-14

很多人,无论是在SOW上还是在其他地方,都有我同样的问题。

我已经在我的网站上安装了BBpress插件。此插件可在站点上启用论坛。

我已经为这个有文档记录的问题争论了好几天(没有结果),当选择任何论坛子菜单项时,插件会导致错误的菜单项突出显示。默认情况下,博客菜单项会高亮显示。

查看:点击论坛,结果页面突出显示“论坛”菜单项OK。但是点击“测试论坛”(或者深入到任何其他论坛项目),结果页面总是突出显示“博客”。

到目前为止,我所知道的是:

  • 单靠CSS是无法修复的

问题是,虽然我觉得我离目标越来越近,但我不知道该怎么做。

我尝试了很多方法。

我找到了这个JQuery解决方案,但不知道如何实现它,我对这种方法也没有信心:

// First add a “forum-class” to your forums menu item in your custom menu 
// Then add this to your js file with YOURURL = the url of your site and forums = your forums slug : 

$(function() { 
    var forumURL = window.location.href.indexOf("YOURURL/forums/");
    if(forumURL > -1){
        $('li.forum-class').addClass('current-menu-item');
    }   
});

然后,我发现这种方法似乎更接近我想要的,但它引入了一个新类,并且似乎无法从博客菜单中清除不正确的类。另外,我不知道该把代码放在哪里,或者在哪里创建js文件。

if (strtolower($thats_all->post_title) == "forum" || strtolower($thats_all->post_title) == "forums") {
    $addclass = ' class="current_page"';
} else {
    $addclass = '';
}

最后,我找到了我认为需要的东西,但我在实现它时遇到了困难(我尝试将它粘贴到我的菜单primary.phpheader.php中,但没有成功)。

// this forces the class current-menu-item to a menu item which I named 'forums' 

add_filter('nav_menu_css_class', 'remove_link_parent_menu_classes', 420 ,3);
function remove_link_parent_menu_classes($classes, $item, $args){

if(strpos($item->url, '/forums/') !== true)
    return array_diff($classes, array('current_page_item', 'current-menu-item'));

return $classes;
}

我想我很接近了。非常接近。只需要往正确的方向推一下。我需要知道:

  • 上面的后一种解决方案会起作用吗?
  • 哪个文件,以及文件中的确切位置,我需要放置代码吗?

谢谢

共有1个答案

越信鸥
2023-03-14

我终于破解了!根据以上线索,我找到了适合我的代码。

add_filter( 'nav_menu_css_class', 'namespace_menu_classes', 10, 2 );
function namespace_menu_classes( $classes , $item ){
    if ( get_post_type() == 'forum' ) {
        $classes = str_replace( 'current_page_parent', '', $classes );
        $classes = str_replace( 'menu-item-16', 'current_page_parent', $classes );
    }
    return $classes;
}

将上述内容复制到function.php文件的末尾。

然后将'forum'更改为您选择的slug名称,并将'menu-item-16'替换为您希望突出显示的正确编号的菜单项(您需要使用web浏览器的开发人员工具来检查您的网站才能找到此项)。

这花了我一周的时间来弄清楚(并学习所需的php)!祝你好运,希望这能帮助其他人。

 类似资料:
  • 我正在为客户创建一个Wordpress站点,网址是http://digitaldemo.net/vintage/about/。我遇到的唯一问题是,当我在给定的页面上时,li.current-menu-item类没有被应用。 例如,在上面的URL上,关于菜单项应该有更深的灰色背景,而不是图标后面的白色“聚光灯”。 下面是我的导航的CSS: 每个li都有一个独特的背景图像(例如li.blog有blog

  • 本文向大家介绍如何覆盖Spring Boot项目的默认属性?相关面试题,主要包含被问及如何覆盖Spring Boot项目的默认属性?时的应答技巧和注意事项,需要的朋友参考一下 这可以通过在application.properties文件中指定属性来完成。 例如,在Spring MVC应用程序中,您必须指定后缀和前缀。这可以通过在application.properties文件中输入下面提到的属性来

  • 我有一个RESTAPI,我不想强迫客户端发送请求参数。我有将近400个api方法,我不想将所有参数设置为“required=false” 我想覆盖Spring RequestParam的默认行为。我想将RequestParam接口的“required”属性的默认值设置为“false”。 有什么方法可以覆盖它吗?如果我不能或这不是最佳实践,有什么方法可以解决上述问题。

  • 问题内容: 我已经创建了自己的主题作为单独的Maven项目,并且已正确加载了该主题。 现在,我想更改组件的大小。例如,一个。它有一个名为的类ui-orderlist-list,它primefaces.css使用200x200的固定尺寸定义。无论我在我的工作中做什么theme.css,它都会被此属性覆盖,并且我无法将内容 扩大。 对于其他组件,我可能只想覆盖一个组件实例,而不是全部。 谁能告诉我该怎

  • 我有一个基于WordPress的网站,我的主题通过添加“当前菜单项”类来突出当前菜单项。 问题是,我有一个包含3个子菜单项的菜单项,它们都指向具有不同容器ID的相同页面(它们的href包含容器ID),因此它们都被突出显示。 如何仅突出显示href指向当前查看的容器的菜单项? 我尝试了这个答案,在标签后面插入了以下内容:

  • 我正在创建一个wordpress模板,目前我正在制作菜单,我已经制作了以下内容: http://jsfidle.net/skunheal/umkyr/ 有两个小问题,我不知道如何解决。Wordpress为当前活动的菜单项提供class.current_page_item。我该怎么做呢? 我想的是: 普通菜单项: 活动菜单项: 但似乎不起作用。有人知道为什么吗? 谢谢你,梅里恩