自定义帖子类型活动菜单项

Posted

技术标签:

【中文标题】自定义帖子类型活动菜单项【英文标题】:Custom post type active menu item 【发布时间】:2015-03-24 05:05:32 【问题描述】:

我创建了一个名为“团队”的自定义帖子类型,并将指向存档页面的链接添加到 WP 菜单。 一旦用户点击它,他就会看到所有团队成员,并且当前页面在菜单中突出显示。 但是当我点击单个团队成员时,他的页面会打开,菜单中的“团队”不再突出显示,它应该是。

这是打开团队页面时的显示方式:

<li id="menu-item-17" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item active”>
<a href="http://localhost:8888/site/team/">Team</a>
</li>

当我打开单个会员页面时,这就是我在菜单中看到的内容:

<li id="menu-item-17" class="menu-item menu-item-type-custom menu-item-object-custom”>
<a href="http://localhost:8888/site/team/">Team</a>
</li>

由于我不是 php 开发人员,我不知道如何使它工作,任何建议将不胜感激:)

【问题讨论】:

【参考方案1】:

我得到这个为我工作,从here 获取和编辑。在我有“盆景”的地方,将其更改为您的自定义帖子类型。在我放置“menu-item-299”的地方,将其更改为您想要突出显示的菜单项的 ID。

function change_page_menu_classes($menu)

    global $post;
    if (get_post_type($post) == 'bonsai')
    
        $menu = str_replace( 'current-menu-item', '', $menu ); // remove all current_page_parent classes
        $menu = str_replace( 'menu-item-299', 'menu-item-299 current-menu-item', $menu ); // add the current_page_parent class to the page you want
    
    return $menu;

add_filter( 'nav_menu_css_class', 'change_page_menu_classes', 10,2 );

如果您有任何问题,请告诉我,因为它们可能会影响到我:)

【讨论】:

感谢 Gavin 的快速回复 :) 我确实发现了一些 sn-ps,但它们都没有在我的情况下工作,将尝试使用这个。不,不是 PHP 开发人员,我按照在线教程使用 WP Types 插件创建了字段:D 好的,在发布我的答案后,我注意到我添加自定义菜单类型的 2 个网站有同样的问题。所以我把它整理出来:)。我正在更新我的答案。 Jusy 将上述代码复制并粘贴到主题根文件夹中的“functions.php”文件中,然后按照说明进行编辑:) 是的,做到了,改变了自定义帖子类型和菜单 ID,但仍然没有:(i.imgur.com/wGEfEKE.png Woho :) 在我使用菜单并将其从 'walker' => new Bootstrap_walker() 更改为 'walker' => '' 后它可以工作(它工作正常,所以我想这不会是一个问题)我为另一种帖子类型(pastebin.com/ytk4S4Ej)创建了另一个规则,这是一种好方法吗?再一次,非常感谢! :)【参考方案2】:

可以通过functions.php中的一个非常简单的过滤器来完成 确保您在注册 CPT 或使用 register_post_type() 时使用了参数 has_archive =&gt; true

//ADDING AN ACTIVE CLASS TO THE CUSTOM POST-TYPE MENU ITEM WHEN VISITING ITS SINGLE POST PAGES
function custom_active_item_classes($classes = array(), $menu_item = false)            
        global $post;

        $classes[] = ($menu_item->url == get_post_type_archive_link($post->post_type)) ? 'current-menu-item active' : '';
        return $classes;
    
add_filter( 'nav_menu_css_class', 'custom_active_item_classes', 10, 2 );

希望这会对某人有所帮助,如果对您有帮助,请发表评论并投票。

【讨论】:

这是一个了不起的修复! htanks :) @Tatof,是的,这太棒了:) 谢谢

以上是关于自定义帖子类型活动菜单项的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress - 从自定义帖子类型中删除子菜单

php 使用自定义帖子类型获取自定义WordPress菜单

php 使用自定义帖子类型获取自定义WordPress菜单

php 删除自定义帖子类型子菜单页面。

通过子主题完全改变自定义帖子类型

如何在自定义帖子类型UI菜单图标区域添加字体真棒图标?