在特定页面上显示Wordpress菜单

时间:2016-09-09 20:21:00

标签: php wordpress

我已在我的functions.php

中注册了2个菜单
add_action( 'after_setup_theme', 'register_my_menu' );
function register_my_menu() {
    register_nav_menu( 'primary', __( 'Primary Menu', 'visio' ) );
    register_nav_menu( 'onepage', __( 'One Page Menu', 'visio' ) );
}

One Page Menu应仅显示在首页上,该首页使用的是自定义页面模板template-parts/page-homepage.php

Primary Menu应显示在所有其他页面上。

但是,当我在header.php中创建if条件时 - 它不起作用,它始终在首页和所有其他页面上显示One Page Menu

if(is_page_template('template-parts/page-homepage.php')) {
    wp_nav_menu(
        array (
            'menu'            => 'onepage',
            'container'       => false,
            'container_id'    => false,
            'menu_class'      => 'nav navbar-nav',
            'menu_id'         => false,
            'depth'           => 2,
            'walker'          => new Description_Walker
        )
    );
} else {
    wp_nav_menu(
        array (
            'menu'            => 'primary',
            'container'       => false,
            'container_id'    => false,
            'menu_class'      => 'nav navbar-nav',
            'menu_id'         => false,
            'depth'           => 2,
            'walker'          => new Description_Walker
        )
    );
}

我做错了什么?我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

我想到的方法很少。

  

1)为主页和其他页面使用单独的header.php模板。

     

2)使用菜单位置设置。

     

3)使用设置选项并根据它们显示菜单

但是使用您的代码我认为您应该尝试使用

替换is_page_template('template-parts/page-homepage.php')
is_page_template('page-homepage.php') 

作为

is_page_template()不适用于目录。

function is_page_template( $template = '' ) {
    if ( ! is_page() )
        return false;

    $page_template = get_page_template_slug( get_queried_object_id() );

    if ( empty( $template ) )
        return (bool) $page_template;

    if ( $template == $page_template )
        return true;

    if ( is_array( $template ) ) {
        if ( ( in_array( 'default', $template, true ) && ! $page_template )
            || in_array( $page_template, $template, true )
        ) {
            return true;
        }
    }

    return ( 'default' === $template && ! $page_template );
}

2)使用菜单位置设置时,您可以使用

register_nav_menus( array(
    'pluginbuddy_mobile' => 'PluginBuddy Mobile Navigation Menu',
    'footer_menu' => 'My Custom Footer Menu',
) );

  <?php
    if ( has_nav_menu( 'footer_menu' ) ) {
         wp_nav_menu( array( 'theme_location' => 'footer_menu' ) );
    } ?> 

控制菜单的显示。

3)使用设置选项,您可以使用update_option()get_option()