我有以下问题:
有一个自定义的帖子类型。有几个页面,每个页面根据一些帖子标准列出了一些帖子(自定义WP\\U查询)。
当我单击链接打开完整版本的帖子时,帖子的父页面是。但为了用户体验,它应该是用户来自的父页面,并且应该在菜单中突出显示。
我通过将“”parent=“添加到链接并在筛选器中解析,部分解决了此问题:
// Fix menu parents
add_filter(\'nav_menu_css_class\', function($classes, $item, $args) {
if (!isset($_GET[\'parent\']) || empty($_GET[\'parent\'])) return $classes;
if ($item->object_id == $_GET[\'parent\']) {
$classes[] = "current_page_item";
$classes[] = "current-menu-item";
}
return $classes;
}, 10, 3);
现在出现了这样的情况:当父菜单位于子菜单内时,该子菜单的父菜单不会标记为活动,子菜单保持关闭状态。所以我需要补充
current-page-ancestor current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor
到该筛选函数内的父菜单项。
所以我想的是,我需要$item->has_child($_GET[\'parent\'])
这显然不存在。
你们有什么想法吗?
编辑:我添加了一个脏客户端JavaScript补丁来解决这个问题。但我还是更喜欢服务器端修复。
jQuery(function() {
jQuery(".current-menu-item").parents("li").addClass("current-page-ancestor current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor");
});