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

Dom*_*cek 4 wordpress wordpress-theming

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

调用

wp_nav_menu(array('theme_location' => 'header'));
Run Code Online (Sandbox Code Playgroud)

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

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

register_nav_menus( array( 'header' => 'Header menu', 'footer' => 'Footer menu' ) );
Run Code Online (Sandbox Code Playgroud)

是的,我试着用

wp_nav_menu(array('theme_location' => 'footer'))
Run Code Online (Sandbox Code Playgroud)

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

wp_nav_menu(array('theme_location' => 'footer'))
Run Code Online (Sandbox Code Playgroud)

菜单很好用.

Pie*_*sen 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' );
Run Code Online (Sandbox Code Playgroud)

请记住,您不必这样做.以下也有效

register_nav_menus( array( 
        'header' => 'Header menu', 
        'footer' => 'Footer menu' 
      ) );
Run Code Online (Sandbox Code Playgroud)

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

菜单截图

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

在后端,转到"外观>菜单>编辑菜单".在"菜单名称"字段中,输入菜单名称,然后单击"创建菜单".您现在可以在菜单屏幕中添加菜单.

菜单的屏幕截图

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

保存菜单的屏幕截图

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

页脚菜单的屏幕截图

您只需要在导航栏中添加样式即可.您将对标题导航菜单执行完全相同的操作,接受您将调用添加到header.php中的菜单.我希望你发现这很有用.