【问题标题】:List children pages, unless none exist, in which case, list sibling pages, in WordPress列出子页面,除非不存在,在这种情况下,列出 WordPress 中的兄弟页面
【发布时间】:2013-08-23 09:14:02
【问题描述】:

我有一个这样的导航结构:

  • 首页
  • 关于
    • 团队
    • 我们的使命
  • 地点
    • 芝加哥
    • 纽约
    • 洛杉矶
  • 服务
  • 联系我们

如果我正在查看“关于”页面,我希望显示侧边栏:

  • 团队
  • 我们的使命

如果我正在查看服务页面,我希望显示侧边栏:

  • 首页
  • 关于
  • 地点
  • 服务
  • 联系我们

这是我目前正在使用的代码。如何修改它以使其按我想要的方式工作?

<?php
    global $wp_query;
    if( empty($wp_query->post->post_parent) ) {
        $parent = $wp_query->post->ID;
    } else {
        $parent = $wp_query->post->post_parent;
    }
    $children = get_pages('child_of='.$parent);
    if( count( $children ) > 0 ) {
?>
    <ul>
        <?php wp_list_pages ("&title_li=&child_of=$parent"); ?>
    </ul>
<?php } ?>

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    这应该要么直接做,要么至少告诉你如何做:

    查看具有子(或为子)的页面时,它仅显示该父级的子级。

    • 访问主页面时,所有顶级页面都列在侧边栏中。
    • 访问没有子级的顶级页面时,会列出所有顶级页面。
    • 访问包含子级的顶级页面时,只会列出子级页面和后代页面。
    • 访问子页面时,仅列出该父页面的子页面和后代页面。
    <?php
    $output = wp_list_pages('echo=0&depth=1&title_li=<h2>Top Level Pages </h2>' );
    if (is_page( )) {
      $page = $post->ID;
      if ($post->post_parent) {
        $page = $post->post_parent;
      }
      $children=wp_list_pages( 'echo=0&child_of=' . $page . '&title_li=' );
      if ($children) {
        $output = wp_list_pages ('echo=0&child_of=' . $page . '&title_li=<h2>Child Pages</h2>');
      }
    }
    echo $output;
    ?>
    

    来自:http://codex.wordpress.org/Function_Reference/wp_list_pages#List_subpages_even_if_on_a_subpage

    此方法利用echo=0 参数,将结果作为字符串返回给变量。 if ($children) 测试现在可以工作了,因为如果 wp_list_pages() 没有找到匹配项,它将返回空。

    【讨论】:

      猜你喜欢
      • 2011-05-17
      • 1970-01-01
      • 2015-04-07
      • 2012-08-14
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多