【问题标题】:Wordpress custom theme - menu not showing when called in footer.phpWordpress 自定义主题 - 在 footer.php 中调用时菜单不显示
【发布时间】:2014-03-22 12:28:18
【问题描述】:

我正在尝试为 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'))

菜单效果很好。

【问题讨论】:

    标签: wordpress wordpress-theming


    【解决方案1】:

    您已正确注册了两个导航菜单。我总是在我最初的主题设置钩子中这样做,该钩子与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' 
          ) );
    

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

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

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

    在这个阶段什么都不会显示,我认为这也是你卡住的地方。原因是没有分配给菜单的任何项目,如果没有分配给菜单,则不会显示任何内容。所以我们必须插入一些东西来显示。

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

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

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

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

    【讨论】:

    • 很棒的答案 - 你已经超越了这里的职责范围。
    • 感谢您的回答,这对您有所帮助,我执行了与您相同的步骤,但可能跳过了一个因此无法正常工作,我按照您的步骤再次完成了整个菜单的创建,它是现在工作。
    【解决方案2】:

    所以我正在制作我的第二个 WP 主题,但我遇到了一个问题。除了页面顶部的标准导航菜单外,页脚元素还包含三个单独的子菜单,可以加载单独的条目。这些分为三个领域:产品范围、行业类型和服务。因此,footer.php 上的源代码是:

    <div class="col-sm-3" style="float:left">
        <h3>Product Range</h3>
        <?php wp_nav_menu( array( 'footer' => 'product-range', 'container_class' => 'footer-menu' ) ); ?>
    </div>
    <div class="col-sm-3" style="float:left">
        <h3>Industry Type</h3>
        <?php wp_nav_menu( array( 'footer' => 'industry-type', 'container_class' => 'footer-menu' ) ); ?>
    </div>
    <div class="col-sm-3" style="float:left">
        <h3>Services</h3>
        <?php wp_nav_menu( array( 'footer' => 'services', 'container_class' => 'footer-menu' ) ); ?>
    </div>
    

    在functions.php中我已经包含:

    *Add footer Menus
    */
        function register_my_menus() {
        register_nav_menus(
            array(
               'product-range' => __( 'Product Range' ),
               'industry-types' => __( 'Industry Types' ),
               'services' => __( 'Services' )
            )
         );
    }
    

    add_action('init', 'register_my_menus');

    所有三个菜单的输出都是相同的,这不是我想要的:

    Product Range
    
    COVID19 Policy
    Latest and Greatest
    About Us
    Contact us1
    Customer Service
    Our Guarantee
    
    Industry Type
    
    COVID19 Policy
    Latest and Greatest
    About Us
    Contact us1
    Customer Service
    Our Guarantee
    
    Services
    
    COVID19 Policy
    Latest and Greatest
    About Us
    Contact us1
    Customer Service
    Our Guarantee 
    

    我在CMS中添加的前两项,其余的都是在其他地方自动生成的?

    什么给了?

    【讨论】:

    • 这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多