Wordpress自定义主题 - 在footer.php中调用时不显示菜单

时间:2014-03-22 12:28:19

标签: wordpress wordpress-theming

我试图为Wordpress创建自定义网站主题,但我遇到了一些问题。我在网站的页眉和页脚部分使用两个完全相同的菜单。

致电

wp_nav_menu(array('theme_location' => 'header'));
header.php中的

运行良好,菜单打印出来没有任何问题,但如果我在footer.php文件中执行相同操作,则菜单不会打印,var_dump(wp_nav_menu(array('theme_location' => 'header')));打印错误。

我尝试过在Google上找到修改functions.php文件的一些解决方法,但是没有一个能帮助我解决这个问题。我的functions.php文件现在只包含一行

register_nav_menus( array( 'header' => 'Header menu', 'footer' => 'Footer menu' ) );

是的,我尝试使用

wp_nav_menu(array('theme_location' => 'footer'))

同样的结果。如果我从header.php中调用相同的函数

wp_nav_menu(array('theme_location' => 'footer'))

菜单效果很好。

1 个答案:

答案 0 :(得分:11)

您已正确注册了两个导航菜单。我总是在最初的主题设置钩子中做到这一点,它挂钩到after_setup_theme钩子。所以我会在你的functions.php中做这样的事情:

function pietergoosen_theme_setup() {
  register_nav_menus( array( 
    'header' => 'Header menu', 
    'footer' => 'Footer menu' 
  ) );
 }

add_action( 'after_setup_theme', 'pietergoosen_theme_setup' );

请记住,您不必这样做。以下也适用

register_nav_menus( array( 
        'header' => 'Header menu', 
        'footer' => 'Footer menu' 
      ) );

您现在应该在"外观>下看到后端的两个菜单。菜单>管理地点" (仅当存在菜单时)

Screenshot of menus

为了页脚菜单,在页脚中添加以下代码,您需要在其中显示菜单:

<nav id="footer-navigation" class="site-navigation footer-navigation" role="navigation">
       <?php wp_nav_menu( array( 'theme_location' => 'footer', 'menu_class' => 'nav-menu', 'fallback_cb' => false ) ); ?>
</nav>

在这个阶段不会显示任何内容,我认为这也是你被困住的地方。原因是没有分配给菜单的任何项目,如果没有分配给菜单,则不会显示任何内容。所以我们必须插入要显示的内容。

在后端,转到&#34;外观&gt;菜单&gt;编辑菜单&#34;。在&#34;菜单名称&#34;字段,输入菜单名称,然后单击&#34;创建菜单&#34;。您现在可以在菜单屏幕中添加菜单。

Screenshot of the menu

您现在可以从左侧选择要插入菜单的项目。您还可以设置菜单的位置,在本例中为页脚。我已选择在页脚中显示类别。点击&#34;保存菜单&#34;完成后。

Screenshot of saved menus

您现在应该在前端看到导航菜单。

Screenshot of footer menu

您现在必须在导航栏中添加样式。您将对标题导航菜单执行完全相同的操作,接受您将调用添加到header.php中的菜单。我希望你觉得这很有用。