J'essaie de comprendre comment interroger des publications dans mon type de publication personnalisé hiérarchique, en utilisant vraisemblablement WP_Query avec des publications enfants. Je peux obtenir toutes les pages sans enfants en définissant 'post_parent' => 0
dans mes arguments WP_Query, mais cela renvoie tous les articles qui ne sont pas des enfants. Je n'ai besoin que de publications qui ont des publications enfants.
Vous pouvez utiliser le paramètre post_parent__not_in
:
$args = array(
'post_type' => 'cpt',
'post_parent__not_in' => array( 0 )
);
$query = new WP_Query( $args );
récupérer enfant publications de type cpt .
Le SQL généré inclura alors cette partie:
wp_posts.post_parent NOT IN (0)
Pour autant que j'ai compris votre exigence, je suppose que c'est ce dont vous avez besoin.
J'ai documenté le code, veuillez le parcourir.
<?php
/*
Idea: Collecting all the posts child posts by --->'post_parent__not_in' => array( 0 )<---
in wp_query. Then find their parent posts by eliminating duplicates.
*/
$query_array = array(
//Change this post type to your Custom-Post-Type.
'post_type' => 'news',
//Showing all posts
'posts_per_page' => -1,
//Giving all child posts only
'post_parent__not_in' => array( 0 )
);
$the_query = new WP_Query($query_array);
//Array to collect all parent posts
$collect_parents = array();
while($the_query->have_posts()):
$the_query->the_post();
//if condition is used to eliminate duplicates, generated by same child post of parent.
if(!in_array($post->post_parent, $collect_parents)){
//$collect_parents contains all the parent post id's
$collect_parents[] = $post->post_parent;
}
endwhile;
//Printing all the parent posts
foreach($collect_parents as $parent){
?>
<!-- Printing parent post title -->
<h2><a href="<?php echo get_permalink($parent ); ?>"> <?php echo get_the_title($parent); ?></a></h2>
<!-- Printing parent post content -->
<p><?php echo get_post_field( 'post_content', $parent); ?></p>
<?php
}
?>