作为菜鸟,我的目标是为我的博客页面提供一个辅助菜单(我确实有一个静态主页),我想知道在模板文件中放置第二个导航的最佳方法是什么。
对于我的初级PHP技能,在对教程进行研究之后,有两种解决方案似乎适合我:
( A)在唯一的主header.php中添加一个条件标记:
<nav id="site-navigation" class="main-navigation" role="navigation">
<?php wp_nav_menu(array('theme_location' => 'menu-1', 'menu_id' => 'primary-menu')); ?>
</nav><!-- #site-navigation -->
<!-- my Secondary Menu solution one -->
<?php if (is_home()) { ?>
<nav>
<?php wp_nav_menu(array('theme_location' => 'menu-2', 'menu_id' => 'menu-2')); ?>
</nav>
<?php } ?>( B)创建一个名为header-home.php的新文件,它是主header.php的副本,并将其集成到博客模板中。
header-home.php:
<nav id="site-navigation" class="main-navigation" role="navigation">
<?php wp_nav_menu(array('theme_location' => 'menu-1', 'menu_id' => 'primary-menu')); ?>
</nav><!-- #site-navigation -->
<!-- my Secondary Menu Solution 2 -->
<nav>
<?php
wp_nav_menu(array('theme_location' => 'menu-2', 'menu_id' => 'menu-2'));
?>
</nav>而不是修改模板文件(在我的例子中是index.php),然后用以下条件启动它:
if( is_home() ) {
get_header('home');
} else {
get_header();
}以下是我的问题:
发布于 2017-03-02 15:47:28
然而,最好总是主观的,但是,为了更好地控制和更好地安排我的模板,我会用以下方式:
首先,我会创建一个新文件夹,例如主题中的template-parts,然后在其中创建另一个文件夹,例如navigation (在不同的文件夹中有单独的模板部件)。
然后,在<my-theme>/template-parts/navigation/文件夹中创建三个文件。
nav.php:这将充当主导航模板文件。它将包含两个菜单的条件和通用的HTML包装标记。nav-one.php:这将包含特定于主导航菜单(菜单-1)的标记和代码。nav-two.php:这将包含特定于辅助导航菜单(菜单-2)的标记和代码。这些文件的内容如下:
nav.php文件:<?php if ( has_nav_menu( 'one' ) ) : ?>
<div class="navigation-one">
<div class="wrap">
<?php get_template_part( 'template-parts/navigation/nav', 'one' ); ?>
</div><!-- .wrap -->
</div><!-- .navigation-one -->
<?php endif; ?>
<?php if ( has_nav_menu( 'two' ) && is_home() ) : ?>
<div class="navigation-two">
<div class="wrap">
<?php get_template_part( 'template-parts/navigation/nav', 'two' ); ?>
</div><!-- .wrap -->
</div><!-- .navigation-two -->
<?php endif; ?>nav-one.php文件:<nav id="site-navigation" class="main-navigation" role="navigation">
<?php wp_nav_menu(array('theme_location' => 'one', 'menu_id' => 'menu-one')); ?>
</nav><!-- #site-navigation -->nav-two.php文件:<nav>
<?php
wp_nav_menu(array('theme_location' => 'two', 'menu_id' => 'menu-two'));
?>
</nav><!-- #secondary-navigation -->最后,我简单地将其放在我的header.php文件中:
get_template_part( 'template-parts/navigation/nav' );header.php文件中得到一个简单的一行模板调用&您不需要在两个不同的header.php文件中进行两次更改,只因为有不同的菜单。nav.php,您将能够控制所有不同的条件和一般的HTML包装标记所有不同的顶部菜单。对于另一个页面的另一个辅助顶部菜单,您将不再需要更改header.php文件。nav-one.php、nav-two.php (随您需要添加多少),您将只控制该Manu的代码和标记。您不需要担心其他菜单或其标记或条件。如果您需要一个新菜单,只需将其添加到例如nav-three.php文件中,然后在nav.php中添加必要的条件,如果要将其添加到顶部菜单中。one也在页脚中。然后在脚注中,只需调用:get_template_part( 'template-parts/navigation/nav', 'one' ); --仅此而已,您不需要编写相同的代码两次。一旦您有了这个设置,您将有更好的粒度控制您的菜单系统。
注意: WordPress默认的二十七个主题使用类似的结构。
https://wordpress.stackexchange.com/questions/258584
复制相似问题