Vous devrez parcourir ces messages, puis effectuer plus de requêtes pour chaque message, en répétant jusqu'à ce que vous ne trouviez aucun message dans une requête.
par exemple
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>';
Oui, la fonction ci-dessus s'appelle elle-même, c'est une fonction récursive. Il continuera à s'appeler jusqu'à ce qu'il atteigne un point où le message regardé n'a pas d'enfants, puis il reviendra sans s'appeler, et toute la pile remontera en créant le tableau des enfants. Vous feriez bien de poursuivre vos recherches dans ce domaine.
Notez qu'il y a un coût inhérent à ce que vous voulez, que vous utilisiez ou non des fonctions récursives, qui est lié au nombre de niveaux de publications que vous avez. 5 niveaux de postes seront plus coûteux que 2, et ce n'est pas une mise à l'échelle linéaire. Vous souhaiterez peut-être utiliser des transitoires pour mettre en cache votre sortie selon la façon dont vous procédez.
Une autre façon de réduire le coût est de ne regarder dans l'arbre des poteaux qu'un certain nombre de niveaux, par exemple des petits-enfants mais pas d'arrière-petits-enfants. Cela peut être fait en passant un paramètre de profondeur et en le décrémentant à chaque appel récursif, en veillant à renvoyer un tableau vide au début si la profondeur est 0 ou inférieure. De nombreux didacticiels sur les fonctions récursives utilisent cela comme exemple.