为什么我的自定义菜单没有在Wordpress中显示?

时间:2014-12-02 23:07:42

标签: wordpress themes

我想在我的主题header.php文件的每个页面上的模板中吐出这个菜单:

enter image description here

注意:主题有3个菜单位置,但我会将它们用于不同的菜单,因此我无法使用这些预先存在的位置。

我尝试使用以下代码在functions.php中注册:

function register_my_menu() {
      register_nav_menu('utility-menu',__( 'Utility' ));
}
add_action( 'init', 'register_my_menu' );

注册它,var_dump( get_registered_nav_menus() );返回:

array(4) {
  ["menu-header"]=>
  string(11) "Menu Header"
  ["menu-top"]=>
  string(8) "Menu Top"
  ["wpv-push-menu"]=>
  string(9) "Push Menu"
  ["utility-menu"]=>
  string(7) "Utility"
}

但这似乎并没有把它联系起来。我显然是以错误的方式做事,所以有人能指出我不理解的事情吗?我想知道如何正确地获取该菜单。

wp_nav_menu( array( 'name' => 'Utility' ) );
wp_nav_menu( array( 'theme_location' => 'utility-menu' ) );

似乎要拉入另一个菜单。

1 个答案:

答案 0 :(得分:1)

您应该在after_setup_theme期间注册您的菜单,而不是init

add_action( 'after_setup_theme', 'register_my_menu' );
function register_my_menu(){
  register_nav_menu( 'utility-menu', 'Utility Menu' );
}

然后,在菜单管理员上,确保将任何菜单分配到效用菜单(您可以在菜单设置菜单页面,菜单顶部等下看到它。

完成这两件事之后,你会像在第二个例子中那样称呼它:

wp_nav_menu( array(
  'theme_location' => 'utility-menu'
) );