Wie man “vorgestellte” Beiträge von der Hauptschleife ausschließt?

In einer category.php Vorlage habe ich eine function erstellt, die “featured” Beiträge vor der Hauptschleife auflistet. Die ausgewählten Posts werden mit einem benutzerdefinierten Feld und get_posts () ausgewählt:

function list_featured_articles(){ $featured_posts = get_posts('meta_key=featured_article&meta_value=on&numberposts=10&order=DESC&orderby=post_date'); } 

Meine Kategorie.php Vorlage:

 echo list_featured_articles(); get_template_part( 'loop', 'category' ); 

Es funktioniert gut, außer dass die vorgestellten Artikel auch in der Kategorie Artikelliste aufgeführt sind. Ich möchte von meiner function die ID der vorgestellten Beiträge erhalten und sie aus der Hauptschleife entfernen. Gibt es einen richtigen Weg, es zu tun? Ich denke, ich könnte eine GLOBALE Variable verwenden, die ein Array von ausgeschlossenen IDs speichert, aber ich möchte vermeiden, Globals dafür zu verwenden.

Solutions Collecting From Web of "Wie man “vorgestellte” Beiträge von der Hauptschleife ausschließt?"

Dies wäre eine geeignete Verwendung von query_posts() mit einer benutzerdefinierten Meta-Abfrage .

Da Sie nach meta_key=featured_article&meta_value=on , würden Sie dann dieselben Parameter ausschließen.

 < ?php // Setup the custom meta-query args $exclude_featured_args = array( 'meta_query' => array( array( 'key' => 'featured_article', 'value' => 'on', 'compare' => '!=' ) ) ); // globalize $wp_query global $wp_query; // Merge custom query with $wp_query $merged_args = array_merge( $wp_query->query, $exclude_featured_args ); // Query posts using the modified arguments query_posts( $merged_args ); ?> 

Das sollte hervorgehobene Beiträge aus der Hauptschleife ausschließen.

Hinweis: Sie möchten dies nur im selben Kontext tun, in dem Sie die Schleife für die vorgestellten Posts anzeigen.

BEARBEITEN

Von Ihrem Kommentar:

Meine function ist so eingerichtet, dass, wenn kein “featured” Post vorhanden ist, automatisch die neusten und als “featured” angezeigt werden

Auch hier können Sie die Methode verwenden, die Sie zum Einschließen von Posts in Ihre vorgeschlagene Schleife verwenden, und dieselben Argumente zum Ausschluss derselben Posts von der primären Schleife verwenden.

Ohne zu wissen, was Ihre Methode ist, kann ich keine präzise Antwort darauf geben, wie Sie sie in Ihr Argumentarray mit ausgeschlossenen Posts integrieren können.