我知道这是一个老问题,但似乎仍未解决。正如@Milo所说,您可能有一个不正确的pre_get_posts
实施
大多数人都是这样做的(例如):
add_filter( \'pre_get_posts\', \'query_post_type\' );
function query_post_type( $query ) {
if ( is_category() ) {
$post_type = get_query_var( \'post_type\' );
if ( $post_type ) {
$post_type = $post_type;
} else {
$post_type = array( \'nav_menu_item\', \'post\', \'departments\' );
}
$query->set( \'post_type\', $post_type );
return $query;
}
}
但我们必须改变路线:
$post_type = $post_type;
并通过
\'nav_menu_item\'
到
$post_type
要显示菜单,如下所示:
add_filter( \'pre_get_posts\', \'query_post_type\' );
function query_post_type( $query ) {
if ( is_category() ) {
$post_type = get_query_var( \'post_type\' );
if ( $post_type ) {
$post_type = array( \'nav_menu_item\', $post_type );
} else {
$post_type = array( \'nav_menu_item\', \'post\', \'departments\' );
}
$query->set( \'post_type\', $post_type );
return $query;
}
}
我希望这能帮助那些犯错的人,并为我糟糕的英语感到抱歉。