我已经创建了一个事件自定义帖子类型,并在菜单中创建了指向该事件(/事件)存档页面的链接。
我正在使用wp_nav_menu()
调用菜单。
当我打开/事件时,菜单上有current_menu_item
类,我将其样式化以更改颜色。这非常有效。
我想通过将菜单项设置为“活动”来增强这一点,无论何时有人在某个页面上。
我创建了一个页面来显示我过去的事件(/过去的事件)。它由一个名为page-past-events.php
. 其思想是当用户打开/past-events
事件链接显示为活动。因为我没有菜单项,所以我想要event
菜单项以具有活动类。理想情况下,当用户也参与任何单个事件(事件/事件-12)时,此项目将处于活动状态。
我当前的代码是
wp_nav_menu(array(
\'theme_location\' => \'headerMenu\',
));
我为我的函数找到了此代码。php:
function my_special_nav_class( $classes, $item ) {
if ( is_page(\'past-events\') ) {
$classes[] = \'current-menu-item\';
}
return $classes;
}
add_filter( \'nav_menu_css_class\', \'my_special_nav_class\', 10, 2 );
但它不针对我的事件菜单项。
我可以用这样的脚本来完成:
<?php if (is_page(\'past-events\')) { ?>
<script type="text/javascript">
var d = document.getElementById("menu-item-15");
d.className += " current-menu-item";
</script>
<?php } ?>
但我希望有一种“WordPress”的方式。
EDIT
/events
wp菜单中链接到事件存档的自定义链接。
事件的slug是events
/past-events
是具有自己模板的单个页面page-past-events.php
因此,如果有人在“过去的事件”页面上,/events的菜单项将获得活动类,并且出于所有意图和目的,将突出显示为活动。
最合适的回答,由SO网友:Sally CJ 整理而成
如果我理解得当,这将满足您的要求:
function my_special_nav_class( $classes, $item ) {
if (
// 1. The menu item is for the "/events" page. Be sure to change the "123"
// (i.e. the "/events" page ID).
( \'page\' === $item->object && 123 == $item->object_id ) &&
// 2. The current page is "Past Events" or that it\'s a "Event" single page.
// If "event" isn\'t the correct post type, change it.
( is_page( \'past-events\' ) || is_singular( \'event\' ) )
) {
$classes[] = \'current-menu-item\';
}
return $classes;
}
add_filter( \'nav_menu_css_class\', \'my_special_nav_class\', 10, 2 );
更新,因此如果/events
菜单项是custom link:
function my_special_nav_class( $classes, $item ) {
if (
( \'custom\' === $item->type && \'events\' === $item->post_name ) &&
( is_page( \'past-events\' ) || is_singular( \'event\' ) )
) {
$classes[] = \'current-menu-item\';
}
return $classes;
}
add_filter( \'nav_menu_css_class\', \'my_special_nav_class\', 10, 2 );
如果不起作用,请尝试检查菜单项ID(如下所示
456
):
function my_special_nav_class( $classes, $item ) {
if (
456 == $item->ID &&
( is_page( \'past-events\' ) || is_singular( \'event\' ) )
) {
$classes[] = \'current-menu-item\';
}
return $classes;
}
add_filter( \'nav_menu_css_class\', \'my_special_nav_class\', 10, 2 );