1

次の構造のWordPressサイトがあります

Page 1
   Sub Page 1
   Sub Page 2
Page 2
   Sub Page 1
      Sub-Sub Page 1
      Sub-Sub Page 2
      Sub-Sub Page 3
   Sub Page 2
   Sub Page 3

サブサブページで、サイドバーのナビゲーションにサブページを一覧表示したい。

以下のコードを出発点として使用すると、サブページではなくサブサブページがナビゲーションに表示されるため、サブサブページでは機能しません。

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

ありがとう

ブレット

4

2 に答える 2

3

動作しました。これが最終的なコードです(http://cssglobe.com/post/5812/wordpress-find-pages-top-level-parent-idから少し変更を加えて取得)

<?php

if ($post->post_parent) {
    $ancestors=get_post_ancestors($post->ID);
    $root=count($ancestors)-1;
    $parent = $ancestors[$root];
} else {
    $parent = $post->ID;
}

$children = wp_list_pages("title_li=&child_of=". $parent ."&echo=0&depth=1");

if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>
于 2012-06-20T19:09:01.830 に答える
1

ブレット、

ポスト祖父母がいるかどうかを確認してから、ポスト祖父母のIDを使用する必要があります。get_post_ancestors() この関数を使用して、祖先がいくつあるかを調べ、それに応じてコードを調整することができます。

于 2012-06-20T13:48:22.640 に答える