Wie wird nach Posts (in hierarchischem benutzerdefiniertem Post-Typ) gesucht, die untergeordnete Objekte haben?

Ich versuche herauszufinden, wie Sie Posts in meinem hierarchischen benutzerdefinierten Post-Typ abfragen können, vermutlich mit WP_Query, die untergeordnete Posts haben. Ich kann alle Seiten, die keine Kinder haben, erhalten, indem 'post_parent' => 0 in meinen WP_Query-Argumenten festlege, aber das alle Beiträge zurückgibt, die keine Kinder sind. Ich brauche nur Beiträge, die untergeordnete Beiträge haben.

Solutions Collecting From Web of "Wie wird nach Posts (in hierarchischem benutzerdefiniertem Post-Typ) gesucht, die untergeordnete Objekte haben?"

Sie können den Parameter post_parent__not_in :

 $args = array( 'post_type' => 'cpt', 'post_parent__not_in' => array( 0 ) ); $query = new WP_Query( $args ); 

Kinderposts vom Typ cpt abrufen.

Das generierte SQL wird dann diesen Teil enthalten:

 wp_posts.post_parent NOT IN (0) 

Soweit ich Ihre Anforderung verstanden habe, denke ich, dass Sie das brauchen.

Ich habe den Code dokumentiert, bitte gehen Sie es durch.

 < ?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){ ?>  

< ?php echo get_the_title($parent); ?>

< ?php echo get_post_field( 'post_content', $parent); ?>

< ?php } ?>