显示特定页面上的WordPress的菜单(Display Wordpress menu on spe

2019-09-28 12:27发布

我有我在已经登记的2个菜单functions.php

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只能显示在FrontPage,这是使用自定义的页面模板template-parts/page-homepage.php

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

然而,当我创建我的if条件header.php -这是行不通的,它总是会显示One Page Menu上的FrontPage和所有其他网页。

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
        )
    );
}

我究竟做错了什么? 我怎样才能使这项工作?

Answer 1:

有迹象表明,我想到一些方法。

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()



文章来源: Display Wordpress menu on specific pages
标签: php wordpress