只获得孙子,而不是页面/当前页面的直接孩子?

时间:2015-11-23 13:12:32

标签: php wordpress foreach wordpress-theming

我现在非常了解javascript,但我是php和wordpress主题构建的新手。我已经搜索了一下,找不到一个看起来像一个非常简单的任务的解决方案,我想要完成的只是获取页面的所有孙子,而不是直接的孩子,就像这样:

组合

  • 孩子1
    • 孙子1A
    • 孙子1B
  • 孩子2
    • 孙子2A
    • 孙子2B

我的页面是“投资组合”,我想“get_pages”,但只有“投资组合”的孙子,所以在这种情况下它只返回: - “孙子1A”,“孙子1B”,“孙子” 2A“,”孙子2B“。

<?php
$portfolio = get_pages( array( 
   'child_of' => $post->ID));

       foreach( $portfolio as $page ) { 
       //My idea here was to check if the page that is being looped through, was a direct child of portfolio, if so then it would skip it.
         if($page !== 'child_of' => $post) {    
         echo $page->post_title; 
              }
       }?>

有什么建议吗?

修改

<?php
$grandchildren = get_pages( array( 'child_of' => $portfolioPageId ) );
foreach( $grandchildren as $grandchild ) {
if($grandchild->post_parent != $portfolioPageId ){   

    echo $grandchild->post_title; 

}}?>

2 个答案:

答案 0 :(得分:1)

查看此代码,该代码使用child_of参数获取投资组合页面ID,并排除post_parent等于您的投资组合页面ID的网页。

<?php
$grandchildren = get_pages( array( 'child_of' => $portfolioPageId ) );
foreach( $grandchildren as $grandchild ) {
    if($grandchild->post_parent != $portfolioPageId ){   
        // Whatever you need
    }
}

答案 1 :(得分:0)

如果您使用的是JS,则可以使用querySelectorAll。这将返回所有的大子节点。您可以使用它:

var getNodes = document.querySelectorAll("grandparent > parent grandchild");