使用Get_Pages获取自定义帖子类型的所有子对象

时间:2012-03-08 作者:Duncan Morley

我正在使用get_pages 函数显示自定义帖子类型中的所有页面,如下所示:

<?php
                $args = array(
                    \'post_type\'    => \'pcct_product\',
                    \'sort_column\'  => \'post_title\',
                    \'menu_order\'   => \'ASC\'
                );

                $pages = get_pages($args); 
                foreach ( $pages as $pagg ) {
                $option = \'<option value="\' . get_page_link( $pagg->ID ) . \'">\';
                $option .= $pagg->post_title;
                $option .= \'</option>\';
                echo $option;
            }
            ?>
我希望能够仅显示此自定义帖子类型中的子项。有人对我该怎么做有什么建议吗?

1 个回复
SO网友:Chip Bennett

有几种方法可以通过返回所有子帖子get_pages().

一种相当简单的方法是获取顶级父帖子的所有ID,然后将这些ID传递给exclude 的参数get_pages():

<?php
// Get all top-level pcct_product posts;
// The \'parent\' => 0 argument returns only
// posts with a parent ID of 0 - that is, 
// top-level posts
$parent_pcct_products = get_pages( array(
    \'post_type\'    => \'pcct_product\',
    \'parent\'       => 0
) );
// Create an array to hold their IDs
$parent_pcct_product_ids = array();

// Loop through top-level pcct_product posts, 
// and add their IDs to the array we just
// created.
foreach ( $parent_pcct_products as $parent_pcct_product ) {
    $parent_pcct_product_ids[] = $parent_pcct_product->ID;
}

// Get all child pcct_product posts;
// passing the array of top-level posts
// to the \'exclude\' parameter
$child_pcct_products = get_pages( array(
    \'post_type\'    => \'pcct_product\',
    \'exclude\'      => $parent_pcct_product_ids,
    \'hierarchical\' => false
) );
?>
(注:未测试)

编辑尝试设置hierarchical tofalse“”,因为我们排除了所有顶级页面。

结束

相关推荐