获取一系列子帖ID,wordpress 3.0,php

时间:2011-02-20 18:32:12

标签: php wordpress-theming

好的,这是一个... ...

在自定义模板上,我正在使用此代码来检索&显示子页面/帖子列表

$args = array(
                    'depth'        => 1,
                    'show_date'    => '',
                    'date_format'  =>     get_option('date_format'),
                    'child_of'     => $post->ID,
                    'exclude'      => '',
                    'include'      => '',
                    'title_li'     => '',
                    'echo'         => 1,
                    'authors'      => '',
                    'sort_column'  => 'menu_order, post_title',
                    'link_before'  => '',
                    'link_after'   => '',
                    'walker' => '' );

                    wp_list_pages( $args );

这很好用,我也想知道如何访问/创建array子邮件ID。我的目标是通过每个子帖子的custom fields函数使用它的ID访问一些get_post_meta()元数据。

谢谢你们。

4 个答案:

答案 0 :(得分:6)

我想我不太清楚这个,因为这是我第一次没有收到SO的回答。

我设法找到了我需要的信息,并将其放在此处供其他使用相同请求浏览的人。

ok - 获取所有子ID ..

$pages = get_pages('child_of=X');
    foreach($pages as $child) {

    // Now you have an object full of Children ID's that you can use for whatever
    // E.G 
    echo $child->ID . "<br />";
}

答案 1 :(得分:3)

如果你想构建一个post id数组供以后使用,你可以这样做:

$pageids = array();
$pages = get_pages('child_of=X');
    foreach($pages as $page){
     $pageids[] = $page->ID;
}

你有一个干净的页面ID数组。

答案 2 :(得分:0)

$children = get_posts('post_parent=SLUG_OF_PARENT_POST&post_status=publish');
foreach($children as $child)
{
echo '<br/>ID:'.$child->ID;
}

您可以使用其他属性(例如$child->post_content)... 如果你需要定义post_type,那么也要添加这个参数:&post_type=POST_TYPE_NAME

答案 3 :(得分:0)

另一种方法:

$my_page_id = 12345;

$child_query_args = array(
    'post_parent'         => $my_page_id,
    'post_type'           => 'page',
    'posts_per_page'      => -1,
    'fields'              => 'ids',
);

$child_query  = new WP_Query($child_query_args);

if ( $child_query && $child_query->have_posts() && $child_query->posts ) {  

    // (Since fields=ids, $child_query->posts is just an array of IDs)
    $child_ids = $child_query->posts;

    foreach ( $child_ids as $child_id ) {

        $whatever = get_post_meta( $child_id, 'whatever', true );

        echo esc_html($whatever);

    }

}