按标题获取所有子页面ID,包括父页面ID

时间:2014-02-25 作者:souporserious

所以我要让所有子ID和父ID只显示该页面及其所有子页面的内容。这是我创建的以下函数,但我想知道是否有更好的方法来实现它?

function get_all_pages( $page_title ) {

    $page = get_page_by_title( $page_title );

    $pages = get_pages( array( \'child_of\' => $page->ID, \'sort_column\' => \'post_date\', \'sort_order\' => \'desc\' ) );

    $array = array();

    $array[] = array( \'ID\' => $page->ID );

    foreach( $pages as $page ){

        $array[] = array( \'ID\' => $page->ID );

    }

    return $array;

}

$allpages = get_all_pages( \'Page Title\' );

foreach( $allpages as $page ) {

    if( is_page( $page[\'ID\'] ) ):

        // Show stuff only on these pages

    endif;

}

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

你做得很辛苦。WP_Query 可以为您完成大部分工作。

function get_all_pages($page_title) {
  $page = get_page_by_title($page_title);

  if (empty($page)) return array();

  $children = new WP_Query(
    array(
      \'post_type\' => \'page\',
      \'post_parent\' => $page->ID,
      \'fields\' => \'ids\'
    )
  );
  array_unshift($children->posts,"{$page->ID}");
  return $children->posts;
}

$allpages = get_all_pages(\'Sample Page\');
var_dump($allpages);
时间很晚了,我很困,但我认为这重复了您的函数,只是您的代码不必要地生成了嵌套数组。我的代码提供了一个“平面”数组。

结束

相关推荐

WordPress后台:如何在Pages-->All Pages下隐藏某些特定页面

我有一些带有短代码的页面,我不想让我的客户看到带有短代码的页面。是否有方法将这些页面隐藏在“页面-->所有页面”下,但应显示在“菜单”下。有没有插件可以实现这一点?我已经找过了,但没有找到。