如何通过Wordpress中的父页面标题获取页面的所有子页面?

时间:2012-02-08 09:15:33

标签: wordpress

示例:

About
--- technical
--- medical
--- historical
--- geographical
--- political

如何创建这样的功能?

function get_child_pages_by_parent_title($title)
{
    // the code goes here
}

并像这样调用它将返回一个充满对象的数组。

$children = get_child_pages_by_parent_title('About');

3 个答案:

答案 0 :(得分:10)

你可以使用它,它可以在页面ID而不是标题上工作,如果你真的需要页面标题,我可以修复它,但ID更稳定。

<?php
function get_child_pages_by_parent_title($pageId,$limit = -1)
{
    // needed to use $post
    global $post;
    // used to store the result
    $pages = array();

    // What to select
    $args = array(
        'post_type' => 'page',
        'post_parent' => $pageId,
        'posts_per_page' => $limit
    );
    $the_query = new WP_Query( $args );

    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        $pages[] = $post;
    }
    wp_reset_postdata();
    return $pages;
}
$result = get_child_pages_by_parent_title(12);
?>

这一切都记录在这里:
http://codex.wordpress.org/Class_Reference/WP_Query

答案 1 :(得分:8)

如果没有WP_Query,我宁愿这样做。虽然它可能不会更有效率,但至少你可以节省一些时间,而不必在/ have_posts()/ the_post()语句中再写一遍。

function page_children($parent_id, $limit = -1) {
    return get_posts(array(
        'post_type' => 'page',
        'post_parent' => $parent_id,
        'posts_per_page' => $limit
    ));
}

答案 2 :(得分:5)

为什么不使用get_children()? (一旦它被认为使用ID而不是标题)

$posts = get_children(array(
    'post_parent' => $post->ID,
    'post_type' => 'page',
    'post_status' => 'publish',
));

检查the official documentation