好的,一旦我开始调试工作,我就能够弄清楚这个nav\\u menu\\u css\\u类过滤器是如何工作的。
首先,我解析nav项的url。然后我用它来与帖子的类别数组进行比较。如果找到匹配项,我将设置$classes[]数组,然后就可以开始了。
我知道解析url有点贫民区,但我希望$项将成为目标页面,但事实并非如此。这只是nav中创建的帖子。除了url之外,没有指向其目标的句柄。
add_filter(\'nav_menu_css_class\', \'post_current_category_class\', 10, 2);
function post_current_category_class($classes, $item) {
// $classes is the list of classes on a nav item
// $item is the nav item
if ( is_singular(\'post\') ) {
$navUrl = $item->url;
$navParts = parse_url($navUrl);
$location = ltrim($navParts[\'path\'], \'/\');
$location = rtrim($location, \'/\');
$post_category_ids = wp_get_post_categories( $GLOBALS[\'post\']->ID);
$categories = array();
foreach($post_category_ids as $c){
$cat = get_category( $c );
$categories[] = $cat->slug;
}
if (in_array($location, $categories)){
$classes[] = \'current-menu-item\';
}
}
return $classes;
}