我有一个网站,其导航消失在“post”帖子类型的分类页面上,但不适用于任何自定义帖子类型的帖子。“post”post类型和自定义post类型的post对其存档和标题使用相同的模板文件-没有区别。菜单使用wp\\U nav\\U菜单功能。下面的链接示例(同样,使用相同的模板文件):
菜单在类别页面上消失
2 个回复
SO网友:Adriana Hernández
我知道这是一个老问题,但似乎仍未解决。正如@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;
}
}
我希望这能帮助那些犯错的人,并为我糟糕的英语感到抱歉。SO网友:Zach Russell
您是否尝试过使用wp_nav_menu()
作用这是wp_nav_menu reference.
而不是这样:
<?php if ( has_nav_menu( \'primary\' )) {
if(!getMainMenu(\'primary\')){
/*$backup = $wp_query;
$wp_query = NULL;
$wp_query = new WP_Query(array(\'post_type\' => \'post\'));*/
getMainMenu(\'primary\');
/*$wp_query = $backup;*/
}
}
我想试试这个:<?php if ( has_nav_menu( \'primary\' )) {
wp_nav_menu( array(\'menu\' => \'primary\' ))
}
结束