我会对这个问题发疯的:
我想向菜单项添加一个特定的css类,具体取决于自定义分类法。这是我目前的代码。
add_filter(\'nav_menu_css_class\', \'auto_custom_type_class\', 10, 2 );
function auto_custom_type_class($classes, $item) {
if($item->object == "marke") {
if( has_term( "laden-1", "laden", $item->ID ) ) {
$classes []= "laden-1";
}
}
return $classes;
}
首先我检查,如果帖子类型是“marke”,然后我检查“marke”在分类法“ladden”中是否具有“ladden-1”的特征。
大约三个小时后,我认为函数“has\\u term”有问题,似乎该函数调用不正确。
有人有什么建议吗?
万分感谢
最合适的回答,由SO网友:Howdy_McGee 整理而成
我不确定你是如何设置菜单的,但这可能是最可靠的方法。
function auto_custom_type_class( $classes, $item ) {
$type = get_post_type( $item->object_id );
if( $type == "marke" && has_term( "laden-1", "laden", $item->object_id ) ) {
$classes []= "laden-1";
}
return $classes;
}
add_filter(\'nav_menu_css_class\', \'auto_custom_type_class\', 10, 2 );
代码的问题是
$item->ID
引用导航项目ID,而不是位于
$item->object_id
. 使用ID获取post类型可能比检查更可靠
$item->object
尽管你可能会使用这种方法。
SO网友:Courtney Ivey
Hmm... try this:
// Adding menu classes based on single post taxonomy terms
add_filter( \'nav_menu_css_class\', \'special_nav_class\', 10, 2 );
function special_nav_class($classes, $item){
$post_type = get_post_type( get_the_ID());
if( is_single() && $post_type == \'marke\' && has_term( \'laden-1\', \'laden\' ){
$classes[] = \'laden-1\';
}
return $classes;
}