【问题标题】:Wordpress Nav Menu Child PagesWordpress 导航菜单子页面
【发布时间】:2013-11-30 15:37:23
【问题描述】:

我有一个 wordpress 的自定义主题,当我添加一个页面时它会自动显示在菜单中,我添加了我想在菜单中显示的子页面,但菜单仅扩展到 1 级,我想要显示 3 个级别,例如

顶部导航菜单

产品 -> 硬件 -> DELL -> 笔记本电脑 -> 台式机

类似的东西。生成菜单的代码如下,请帮助我

    <section id="nav-container">
    <section class="container_12">
    <section class="grid_12"> 
        <!-- #nav start -->
        <nav id="nav">
          <ul>
            <li><span class="nav-icon icon-home"></span> <a href="<?php echo home_url( '/' ); ?>">Home</a></li>
            <?php

        $wpmenu = new WP_Query(array('post_type' => 'page','post_status' => 'publish', 'post_parent' => '0','order' => 'ASC','orderby' => 'menu_order'));
        $myi = 1;
        if($wpmenu->have_posts()): while($wpmenu->have_posts()): $wpmenu->the_post();
        $icon = get_post_meta(get_the_ID(), "icon", TRUE);
        ?>  
            <li><span class="nav-icon icon-<?php echo $icon;?>"></span>
            <a href="<?php echo the_permalink(); ?>"><?php echo the_title(); ?></a>
            <?php
            $submenu2 = "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'page' AND $wpdb->posts.post_parent = '".get_the_ID()."' ORDER BY menu_order ASC";
            if($menu3 = $wpdb->get_results($submenu2, OBJECT))
            {
                echo "<ul>";
                foreach($menu3 as $menu4)
                {
                ?>
                <li><a href="<?php echo get_permalink($menu4->ID); ?>"><?php echo $menu4->post_title; ?></a></li>
                <?php
                }
                echo "</ul>";
            }
            else
            {
                echo "</li>";   
            }
            ?>
            <?php
            $myi++;
            endwhile; endif;
            wp_reset_query();
            ?>
            </li>
          </ul>
        </nav>
        <!-- #nav end --> 

        <!-- responsive navigation start -->
        <select id="nav-responsive">
          <option value="<?php echo home_url( '/' ); ?>">Home</option>
          <?php
        $active = "";
        $wpmenu = new WP_Query(array('post_type' => 'page','post_status' => 'publish', 'post_parent' => '0','order' => 'ASC','orderby' => 'menu_order'));
        if($wpmenu->have_posts()): while($wpmenu->have_posts()): $wpmenu->the_post();
          ?>
          <option value="<?php echo get_permalink(); ?>">
          <?php the_title();?>
          </option>
          <?php
          endwhile; endif;
          wp_reset_query();
          ?>
        </select>
        <!-- responsive navigation end -->

        <section id="search-box">
          <form action="<?php echo esc_url( home_url( '/' ) ); ?>" role="search" method="get" id="searchform">
            <input id="m_search" name="s" type="text" placeholder="Type and hit enter..." />
            <input class="search-submit" type="submit" id="searchsubmit" />
          </form>
        </section>
      </section>
      <!-- .grid_12 end --> 
    </section>
    <!-- .container_12 end --> 

  </section>
  <!-- #nav-container end --> 

【问题讨论】:

  • 你为什么不用wp_nav_menu()?
  • 我不知道该怎么做,你能帮我解决一下,这样 CSS 设置和其他东西就不会受到干扰。您能告诉我如何嵌入该代码吗?
  • 使用custom walker 创建您需要的输出。 wordpress.stackexchange.com 上还有更多示例。

标签: php css wordpress


【解决方案1】:

我建议使用免费的Multi-level Navigation 插件,它可以让您完全控制导航中显示的链接。它非常易于安装,并提供了一个可视化编辑器的链接,以便您可以像网站的其他部分一样设置下拉菜单的样式。

【讨论】:

  • 感谢您的回复,但正如您所见,我的菜单中有图标,如果我直接安装某些东西,它将全部消除图标。我不知道如何手动设置。因此,如果有人为此添加一个循环并使其正常工作会更好
  • 很公平。但是,我个人认为最好使用插件,这样您就可以在图形用户界面中管理导航,而不必担心代码。虽然您最初会丢失图标和样式,但可以在以后重新添加它们。在这种情况下,功能胜于形式可能是最好的。
猜你喜欢
  • 1970-01-01
  • 2019-09-08
  • 2010-11-21
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-16
相关资源
最近更新 更多