我使用wp_nav_menu
使用此代码functions.php
:
register_nav_menus( array(
\'sidebar_menu\' => \'Sidebar menu\',
\'topmenu\' => \'topmenu\',
) );
$args = array(
\'theme_location\' => \'topmenu\'
);
wp_nav_menu( $args );
此代码有效。菜单将显示在主题中的所有内容之前。现在我想在我的
header.php
例如,我尝试将代码移到那里:
$args = array(
\'theme_location\' => \'topmenu\'
);
wp_nav_menu( $args );
我希望代码在这里也能正常工作,但事实并非如此。菜单为空。功能
register_nav_menus
仍在
functions.php
. 这个
header.php
正确加载。
The code below returns true in the header.php
if ( has_nav_menu( \'topmenu\' ) ) {
echo \'true\';
}
为什么菜单显示为空?
最合适的回答,由SO网友:Jens Törnell 整理而成
我有一个pre_get_posts
. 我错过的是:
&& $wp_query->is_main_query()
这可以防止
pre_get_posts
在菜单上运行查询。
Full code
add_action("pre_get_posts", "custom_front_page");
function custom_front_page( $wp_query ){
if( is_admin() ) {
return;
}
if( is_front_page() && $wp_query->is_main_query() ) {
$wp_query->set(\'post_type\', \'produkt\');
$wp_query->set(\'page_id\', \'\');
$wp_query->is_page = 0;
$wp_query->is_singular = 0;
$wp_query->is_post_type_archive = 1;
$wp_query->is_archive = 1;
}
}