Wie man Beiträge nach ID innerhalb einer Kategorie / Archivschleife ausschließt

Ich möchte die aktuelle “Seite” (nicht Post) aus einer Kategorierunde ausschließen:

Dateien:

archive.php, content.php, content-top-page.php (Seitenvorlage)

Ich habe 2 Kategorien (archive.php) erstellt und 2 Beiträge zu jeder Kategorie hinzugefügt. Ich habe “content-top-page.php” oben in der Kategorie eingefügt. Das sind “Seiten” und ich möchte nicht, dass sie sich ändern (ein Titel, ein Post-Thumbnail und ein bestimmter Text, das ist alles).

Das Problem :

Die Vorlagenseiten werden innerhalb der Schleife mit den anderen Posts angezeigt. Die aktuelle Vorlagenseite jeder Kategorie wird einbezogen. Ich verwende spezielle ACF-Variablen in den Vorlagenseiten.

Danke, wenn Sie ein paar Ideen haben.

Archiv.php

$exclude_ids = array( 45, 36 ); $my_query = new WP_Query(array( 'exclude' => $exclude_ids, 'post_type' => 'post', 'post_status' => 'publish', )); 
if ( have_posts() ) : ?>
have_posts() ) : $my_query->the_post();

content-top-page.php (Vorlagenseite)

  

<img src="https://wordpress.stackexchange.com/questions/283954/how-to-exclude-posts-by-id-within-a-category-archive-loop/" />

<img src="https://wordpress.stackexchange.com/questions/283954/how-to-exclude-posts-by-id-within-a-category-archive-loop/" />

Inhalt.php

 <article id="post-" class=""  style="border:1px solid #6f3fa5;">  
<a href="https://wordpress.stackexchange.com/questions/283954/how-to-exclude-posts-by-id-within-a-category-archive-loop/">
<?php if( is_single() ){ the_content( sprintf( /* translators: %s: Name of current post. */ wp_kses( __( 'Continue reading %s ', 'blog-way' ), array( 'span' => array( 'class' => array() ) ) ), the_title( '"', '" ', false )) ); wp_link_pages( array( 'before' => '', ) ); } else { echo excerpt_custom_length(20); } ?>

Solutions Collecting From Web of "Wie man Beiträge nach ID innerhalb einer Kategorie / Archivschleife ausschließt"

Verwenden Sie pre_get_posts, um die Kategorien auszuschließen, die nicht in der Schleife angezeigt werden sollen.

 function exclude_posts_from_specific_category( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'cat', '-2' ); } } add_action( 'pre_get_posts', 'exclude_posts_from_specific_category' ); 

Oder erstellen Sie eine neue WP_Query und verwenden Sie die Kategorie-Parameter.

 $args = array( 'category__not_in' => 2 , 'category__in' => 4 ); $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { echo '
    '; while ( $the_query->have_posts() ) { $the_query->the_post(); echo '
  • ' . get_the_title() . '
  • '; } echo '
'; } else { } wp_reset_postdata();

Wenn Sie nur Beiträge aus einer Kategorie anzeigen möchten, verwenden Sie das Kategoriearchiv.