Anda perlu mengulangi posting-posting itu dan kemudian melakukan lebih banyak pertanyaan untuk setiap posting, ulangi sampai Anda tidak menemukan posting dalam kueri.
misalnya
function get_posts_children($parent_id){
$children = array();
// grab the posts children
$posts = get_posts( array( 'numberposts' => -1, 'post_status' => 'publish', 'post_type' => 'microsite', 'post_parent' => $parent_id, 'suppress_filters' => false ));
// now grab the grand children
foreach( $posts as $child ){
// recursion!! hurrah
$gchildren = get_posts_children($child->ID);
// merge the grand children into the children array
if( !empty($gchildren) ) {
$children = array_merge($children, $gchildren);
}
}
// merge in the direct descendants we found earlier
$children = array_merge($children,$posts);
return $children;
}
// example of using above, lets call it and print out the results
$descendants = get_posts_children($post->ID);
echo '<pre>';
print_r($descendants);
echo '</pre>';
Ya fungsi di atas memanggil dirinya sendiri, itu adalah fungsi rekursif. Itu akan terus memanggil dirinya sendiri hingga mencapai ke titik di mana pos yang dilihat tidak memiliki anak, maka ia akan kembali tanpa memanggil dirinya sendiri, dan seluruh tumpukan akan kembali membentuk susunan anak-anak. Anda sebaiknya melakukan penelitian lebih lanjut di bidang ini.
Perhatikan bahwa ada biaya yang melekat pada apa yang Anda inginkan, terlepas dari apakah Anda menggunakan fungsi rekursif atau tidak, yang terkait dengan berapa banyak level posting yang Anda miliki. 5 level posting akan lebih mahal dari 2, dan ini bukan skala linear. Anda mungkin ingin menggunakan transien untuk menyimpan cache tergantung pada bagaimana Anda melakukan ini.
Cara lain untuk mengurangi biaya adalah dengan hanya melihat ke bawah pohon posting sejumlah tingkat, misalnya cucu tetapi tidak ada cucu yang hebat. Ini dapat dilakukan dengan mengirimkan parameter kedalaman, dan menurunkannya pada setiap panggilan rekursif, memastikan untuk mengembalikan array kosong di awal jika kedalamannya 0 atau lebih rendah. Banyak tutorial tentang fungsi rekursif menggunakan ini sebagai contoh.