【问题标题】:Wordpress Menu itemWordPress 菜单项
【发布时间】:2010-05-11 18:41:23
【问题描述】:

我有一个包含子项的主页。现在我的问题是,是否可以将主页链接直接指向其中的子项?例如

-主页(链接到第2页)

---第2页

这是我的代码:

<div id="MainNav">
<ul>
<?php wp_list_pages('exclude=3&sort_column=menu_order&title_li=&depth=1'); ?>
</ul>
</div>
<div id="leftCol">
<?php if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } else { ?>
<?php } ?>
</div>

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    乍一看,您的方法应该可行。如果没有关于您的问题的更多信息,真的不能说更多。

    作为替代方案,我在我维护的博客上做了类似的事情,但需要对输出进行更多控制。所以我最终推出了自己的功能。我是这样做的:

    // Generate the subnav for a page
    // Returns a list of links to child pages
    // if there are no children, returns a blank list
    function get_subnav($page_id)
    {
         $current_page = get_page($page_id);
         if ($current_page->ancestors) {
           $child = get_page($page_id);
           $ancestor_id = $child->ancestors[0];
           $page = get_page($ancestor_id);
         } else {
           $page = get_page($page_id);
         }
    
         $children = get_children('post_parent=' . 
                $page->ID . '&post_type=page&post_status=publish&order=ASC&orderby=menu_order');
    
         if ($children) {
           $html = '';
           foreach ($children as $child) {
           $html .= "<li><a href='" . get_page_link($page->ID) . "'>" . get_post_meta($page->ID, 'nav_name', true) . "</a></li>\n";
           }
         } else {
           return false;
    }
    
    
    return $html;
    

    }

    我这样称呼它:get_subnav($post-&gt;ID)

    请注意,它不会爬上整个子页面树。如果您从子页面调用它,它将使用其第一个祖先作为根节点来构建导航。

    【讨论】:

    • 谢谢。没有问题我只是想知道是否可以将主页链接到第一个孩子。因此,假设您有一个主导航“关于我们”,并且在内部有关于我们的子导航,例如“我们是谁,团队,新闻”。我希望“关于我们”链接到“我们是谁”,而不是链接到显示关于我们的页面。
    【解决方案2】:

    我不明白。

    您提供的代码可以正常工作,不会引发任何错误(即使在调试模式下也不会)。你问这是否有效?如果是这样,是的。如果它不适合您,请告诉我们您的规格以及您在主题中的哪个位置添加它。

    另外,您应该使用$wp_query-&gt;post-&gt;post_parent,而不是$post-&gt;post_parent。如果有人一直在使用自定义查询并在循环中调用他们$post,这会更安全。

    【讨论】:

      【解决方案3】:

      我之前通过创建一个自动重定向到第一个孩子的页面模板来做到这一点。也许你可以使用它。在您的模板目录中添加一个名为 tofirstchild.php 的文件并将其放入其中:

      <?php
      
      /*
      Template Name: Redirect To First Child
      */
      
      if ( have_posts() ) {
          while ( have_posts() ) {
              the_post();
              $pagekids = get_pages( "post_parent=" . $post->ID . "&sort_column=menu_order" );
              $firstchild = $pagekids[0];
              wp_redirect( get_permalink( $firstchild->ID ) );
          }
      }
      
      ?>
      

      然后在管理区域中,为“关于我们”页面选择“重定向到第一个孩子”模板。

      【讨论】:

      • 如果您在我发布后立即看到此内容,则代码中存在错误。现在已经更正了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 2018-09-04
      • 2016-02-07
      • 2015-02-25
      相关资源
      最近更新 更多