Entfernen Sie untergeordnete Post aus benutzerdefinierten Post-Typ-Archiv

Ich habe einen benutzerdefinierten Post-Typ und eine Seite wie diese für die Anzeige der Posts darin:

Archiv- (myCPT) .php Ich habe 2 Beiträge erstellt, und einer von ihnen ist das Kind. Wie kann ich nur die übergeordnete Seite in meinem Archiv- (myCPT) .php anzeigen

Hier ist ein Ausschnitt aus archive- (myCPT) .php :

<?php if( have_posts() ){ // normal blog layout $x = 1; while ( have_posts() ){ the_post(); get_template_part( 'inc/post-format/content-debate'); // advertising between posts if($ad_posts_mode != 'none'){ // take into account ad frequency if (($x % $ad_posts_frequency) == 0){ switch ($ad_posts_mode) { case 'image': echo '
'; break; case 'html': echo '
'.apply_filters('shortcode_filter',do_shortcode(of_get_option('ad_posts_code'))).'
'; break; } } } $x++; } }

Solutions Collecting From Web of "Entfernen Sie untergeordnete Post aus benutzerdefinierten Post-Typ-Archiv"

Wenn ein Post (vom Typ ony) ein Kind ist, ist seine Eigenschaft post_parent eine Nummer mit der Post-ID des Elternteils. Beiträge ohne Eltern haben stattdessen einen Wert von 0 . So können Sie diesen Wert testen:

 if ( 0 === (int) $post->post_parent ) { // show the post } 

Eine weitere Option ist ein Filter auf pre_get_posts (nicht getestet, nur eine Idee):

 add_action( 'pre_get_posts','hide_children' ); function hide_children( $query ) { remove_action( 'pre_get_posts', current_filter() ); if ( is_admin() or ! $query->is_main_query() ) return; if ( ! $query->is_post_type_archive( 'your_post_type_name' ) ) return; // only top level posts $query->set( 'post_parent', 0 ); }