在Genesis子主题中添加其他菜单

时间:2014-02-02 作者:Brittani

我买了一个Genesis儿童主题,它只支持两个菜单,一个主菜单和一个次菜单。然而,对于我想做什么与我的网站,我需要有6个菜单一起。

这是我的网站http://thenottypicalarmywife.com

这就是我想要的菜单http://livingwellspendingless.com 菜单位于页面顶部。

4 个回复
SO网友:Brad Dalton

这里有两个选项:

First: 代码进入子主题函数文件并创建一个额外菜单,该菜单显示在genesis\\u after\\u标题位置。

添加新导航菜单需要两个步骤。

One. Register the menu(s) using the init action hook NOT after_theme_setup

Two. 将菜单挂接到主题挂接位置(可以用显示菜单的模板代码替换第二步,但在修改Genesis时,这不是最佳做法,保留用于父主题开发)

function register_additional_genesis_menus() {

register_nav_menu( \'third-menu\' ,
__( \'Third Navigation Menu\' ));
}
add_action( \'init\', \'register_additional_genesis_menus\' );

add_action( \'genesis_after_header\', \'add_third_nav\' ); 

function add_third_nav() {

wp_nav_menu( array( 
\'theme_location\' => \'third-menu\', 
\'container_class\' => \'genesis-nav-menu\' ) );
}
只需将genesis\\u after\\u标题挂钩更改为正确的hook location 您想显示菜单。

您还可以更改容器类(nav menu)以匹配现有Genesis nav menu类,或者如果使用唯一的类,则需要添加大量CSS。

您还可以register multiple menus 使用register\\u nav\\u菜单($位置);

function register_multiple_menus() {

register_nav_menus( array(
\'menu_three\' => \'Menu Name\',
\'menu_four\' => \'Menu Name\',
    \'menu_five\' => \'Menu Name\',
    \'menu_six\' => \'Menu Name\'
) );
add_action( \'init\', \'register_multiple_menus\' );
Second: Genesis还包括一个内置功能,可以为其他菜单添加主题支持。

这段代码进入子主题函数文件并创建6个导航菜单。

remove_theme_support ( \'genesis-menus\' );
add_theme_support ( \'genesis-menus\' , array ( 
\'primary\' => \'Primary Navigation Menu\' , 
\'secondary\' => \'Second Navigation Menu\' ,
\'third\' => \'Third Navigation Menu\' ,
\'fourth\' => \'Fourth Navigation Menu\' ,
\'fifth\' => \'Fifth Navigation Menu\' ,
\'six\' => \'Six Navigation Menu\' 
) );

add_action( \'genesis_after_header\', \'genesis_do_more_navs\' ); 

function genesis_do_more_navs() {

wp_nav_menu( array( \'theme_location\' => \'primary\', \'container_class\' => \'genesis-nav-menu\' ) );
wp_nav_menu( array( \'theme_location\' => \'secondary\', \'container_class\' => \'genesis-nav-menu\' ) );
wp_nav_menu( array( \'theme_location\' => \'third\', \'container_class\' => \'genesis-nav-menu\' ) );
wp_nav_menu( array( \'theme_location\' => \'fourth\', \'container_class\' => \'genesis-nav-menu\' ) );
wp_nav_menu( array( \'theme_location\' => \'fifth\', \'container_class\' => \'genesis-nav-menu\' ) );
wp_nav_menu( array( \'theme_location\' => \'six\', \'container_class\' => \'genesis-nav-menu\' ) );

}
可以在现有类中包装每个菜单项,也可以在现有或新菜单类中包装批次。

显然,这些并不是在WordPress或Genesis中添加新菜单的唯一方法,但对于子主题用户来说,这是一个很好的选择,因为Genesis支持使用自定义功能,而不是编辑父主题模板文件。

来源http://codex.wordpress.org/Function_Reference/wp_nav_menu

SO网友:cybmeta

您应该首先注册新菜单,通常是在函数中。php:

add_action( \'after_setup_theme\', \'the_theme_setup\' );
function the_theme_setup() {
    // Register mymenu
    register_nav_menu( \'mymenu\', __(\'My Menu\' ) );
 }
然后,在管理菜单管理器中,您可以构建菜单并将其分配到以前注册的新菜单位置。之后,可以在主题中显示菜单的位置渲染菜单:

//For more params see http://codex.wordpress.org/Function_Reference/wp_nav_menu
wp_nav_menu( array(
                   \'theme_location\' => \'mymenu\',
                  ) );

SO网友:Bryan Willis

以上答案都可以接受,however 有特殊的genesis功能来添加菜单register_nav_menu 以及wp_nav_menu 不需要使用。。。如果你使用genesis,你还不如利用它们的功能!

<小时>

This is the preferred way in Genesis 2.0+ to add genesis menu support in child themes:

//* Start the engine - include this at begining of theme
include_once( get_template_directory() . \'/lib/init.php\' );

// Add support for footer menu - doesn\'t need to be hooked into anything...
// Include theme support for menus and everything else genesis here
add_theme_support ( \'genesis-menus\' , array ( 
    \'primary\'   => __( \'Primary Navigation Menu\', \'genesis\' ),
    \'secondary\' => __( \'Secondary Navigation Menu\', \'genesis\' ),
    \'footer\'    => __( \'Footer Navigation Menu\', \'genesis\' )
) );

// Hook into genesis_footer early to output custom menu 
add_action( \'genesis_footer\', \'wpse_genesis_custom_footer_menu\', 9 );
function wpse_genesis_custom_footer_menu() {
    genesis_nav_menu( array(
        \'theme_location\'  => \'footer\',
        \'container\'       => \'div\',
        \'container_class\' => \'menu-wrap\',
        \'menu_class\'      => \'menu genesis-nav-menu menu-footer list-inline\',
        \'depth\'           => 1
) );
}

// OPTIONAL - Add genesis attributes for semantic markup  
add_filter( \'genesis_attr_nav-footer\', \'gb3_add_nav_footer_attr\' );
function gb3_add_nav_footer_attr( $attributes ){
    $attributes[\'role\'] = \'navigation\';
    $attributes[\'itemscope\'] = \'itemscope\';
    $attributes[\'itemtype\'] = \'http://schema.org/SiteNavigationElement\';
    return $attributes;
}

// OPTIONAL - Add .wrap class
add_theme_support( \'genesis-structural-wraps\', array(
    \'header\',
    \'nav\',
    \'subnav\',
    \'site-inner\',
    \'footer-widgets\',
    \'footer\',
    \'nav-footer\'
) );

SO网友:WordPress Mike

在管理中创建菜单,然后使用<?php wp_nav_menu( array(\'menu\' => \'Menu Name\' )); ?> 将它们放置在模板中。

这将是最简单的方法。

结束

相关推荐

How to add taxonomy in menus?

书籍(自定义帖子类型)小说(税)科学(税)历史(税)--书籍体裁(税务)小说(术语)科学(学期)历史(学期)以下哪一项是做这件事的“好方法”?对于前一个(这是我目前在管理菜单中的功能,我为每个功能都提供了“register\\u taxonomy”功能),我无法选择要在菜单中显示的“Tax”。而对于后者,我可以将它们添加到菜单中,只需要一个“register\\u taxonomy”函数。