自定义帖子类型活动菜单项
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 => 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,是的,这太棒了:) 谢谢以上是关于自定义帖子类型活动菜单项的主要内容,如果未能解决你的问题,请参考以下文章