我知道这个问题已经很老了,但由于还没有答案,WordPress支持论坛上也有许多类似的问题,我最好分享我的发现,也许可以帮助别人。
菜单消失的问题可能是由于插件或主题中的代码错误地修改全局$wp_query
对象使用pre_get_posts
过滤器挂钩。
我发现导致问题的代码在主题中:
function namespace_add_custom_types( $query ) {
if( is_category() || is_tag() && empty( $query->query_vars[\'suppress_filters\'] ) ) {
$query->set( \'post_type\', array(
\'post\',
\'projects\',
));
return $query;
}
}
add_filter( \'pre_get_posts\', \'namespace_add_custom_types\' );
此代码段本应将自定义帖子类型添加到类别存档中,但它也会影响中的查询
wp_nav_menu
.
要解决此问题,我必须更正if
条件:
function namespace_add_custom_types( $query ) {
if( is_archive() && (is_category() || is_tag()) && empty( $query->query_vars[\'suppress_filters\'] ) ) {
$query->set( \'post_type\', array(
\'post\',
\'projects\',
));
return $query;
}
}
add_filter( \'pre_get_posts\', \'namespace_add_custom_types\' );
YMMV和原因可能完全不同,但这就是我如何修复类别模板中缺少菜单的问题。