将菜单支持添加到自定义WordPress主题

6

我正在创建我的第一个WordPress主题,现在遇到了菜单支持的问题:

我在functions.php中添加了一个自定义菜单,并像下面所示将其实现到header.php中,但是管理区域中的菜单选项没有显示出来!

# functions.php

<?php

    add_theme_support( 'menus' );

    add_action( 'init', 'register_my_menus' );

    function register_my_menus() {
        register_nav_menus(
            array(
                'primary-menu' => __( 'Primary Menu' ),
                'secondary-menu' => __( 'Secondary Menu' )
            )
        );
    }

?>

# header.php
# [...]
    <?php wp_nav_menu( array( 'theme_location' => 'primary-menu' ) ); ?>
# [...]

我的设置:

  • Wordpress版本3.4.2
  • MAMP开发环境
  • 没有插件

其他信息:

  • 菜单选项在其他模板中显示
  • 菜单在页面上正确呈现

我错过了什么?


编辑#1

我甚至看不到管理菜单中的菜单选项(像这样!


你能否在菜单仪表板上的主题位置看到“二级菜单”下拉菜单? - Libin
不,我没有看到那个。(我修改了问题。) - Sven
1个回答

10

有几点需要注意 - 你不需要添加 add_theme_support(); 或 add_action('init', 'register_my_menus')

直接调用 register_nav_menus 函数即可,如下所示:

register_nav_menus(
    array(
    'primary-menu' => __( 'Primary Menu' ),
    'secondary-menu' => __( 'Secondary Menu' )
    )
);

如果您希望的话,也可以检查函数是否存在。但如果它只用于您自己的主题并且您知道它存在,则不是真正必要的。

if ( function_exists( 'register_nav_menus' ) ) {
    ...
}

哦,天啊...我把文件命名为function.php而不是functions.php。叫我白痴-.- - Sven
实际上,您应该使用以下代码: add_action( 'init', 'register_my_menus' ); 来注册您的菜单。 https://codex.wordpress.org/Navigation_Menus - Geza Gog
是的,register_nav_menus() 定义了一个或多个菜单位置。只要您定义了至少一个菜单位置,WordPress 就允许您创建菜单,即使您不需要将任何这些菜单链接到菜单位置。我相信那个设计当时(很久以前)对某人来说是有道理的。 - Brett Donald

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接