Theme Location empty

时间:2012-11-25 作者:Jinson Johny

我有个问题。我有一个WordPress主题,它支持两个导航菜单。默认情况下,主菜单显示所有页面,次菜单显示类别。当我转到外观->菜单来更改设置时,它会显示“当前主题本机不支持菜单,但您可以使用“自定义菜单”小部件将您在此处创建的任何菜单添加到主题的侧栏”。谁能告诉我怎么解决这个问题吗?

1 个回复
SO网友:Chip Bennett

“当前主题本机不支持菜单

这是你的问题。您的主题未实现核心WordPress自定义导航菜单功能。

主菜单显示所有页面。。。

我假设它是通过拨打wp_list_pages()

。。。默认情况下,次菜单显示类别。

我假设它是通过拨打wp_list_categories().

如何修复您需要修改主题以适应自定义导航菜单功能。幸运的是,这样做一点也不难。它包括两个步骤:

为自定义导航菜单注册主题位置在模板中输出自定义导航菜单register_nav_menus().

将以下内容添加到functions.php, 理想情况下,在设置功能中:

function wpse73875_setup_theme() {
    // Register nav menu Theme Locations
    register_nav_menus( array(
        \'primary\' => \'Primary Menu\',
        \'secondary\' => \'Secondary Menu\'
    ) );
}
add_action( \'after_setup_theme\', \'wpse73875_setup_theme\' );
在模板中输出自定义导航菜单,您需要找到主题调用的位置wp_list_pages()wp_list_categories(). 您可能会在header.php. 我们将通过将调用包装到wp_nav_menu() 内部ahas_nav_menu() 有条件的

替换此:

wp_list_pages( /* there may or may not be args here */ );
…使用此:

if ( has_nav_menu( \'primary\' ) ) {
    wp_nav_menu( array(
        \'theme_location\' => \'primary\'
    ) );
} else {
    wp_list_pages( /* exactly as it was in the Theme previously */ );
}
并替换此:

wp_list_categories( /* there may or may not be args here */ );
。。。使用此选项:

if ( has_nav_menu( \'secondary\' ) ) {
    wp_nav_menu( array(
        \'theme_location\' => \'secondary\'
    ) );
} else {
    wp_list_categories( /* exactly as it was in the Theme previously */ );
}
您可能需要处理传递给的参数wp_nav_menu() 在每种情况下。有关更多信息,请查看Codex条目。

有关将特定主题的菜单转换为支持自定义导航菜单的更精确说明,您需要update your question 包括exact code 这需要wp_list_pages()wp_list_categories().

结束

相关推荐

WooCommerce dynamic menus

我有一个基本的WordPress网站,设置了Suffusion主题和WooCommerce插件。这在大多数情况下都很有效,但是当我让人们点击/悬停在“Shop”菜单图标上时,我希望它能够动态地下拉我定义的产品类别。我如何做到这一点?我肯定有关于这个主题的文档,但我不确定要查找什么。我主要是一名系统管理员。