PHP wenn Post schon angezeigt wird, dann

Ich habe eine neue Seite mit einem jQuery-Karussell erstellt, das sich zwischen verschiedenen Nachrichtenthemen dreht. Sie können hier sehen :

Unter dem Karussell befindet sich jedoch eine statische Liste zusätzlicher Schlagzeilen. Was ich tun muss, ist PHP-Code zu finden, der sagt, WENN eine Geschichte im Karussell erscheint, DANN schließe sie aus den Posts unten aus. Dies dient der Vermeidung von Doppelarbeit.

Ich kann den Offset nicht einfach erhöhen. Der Offset ist momentan auf ‘4’ eingestellt. Das Karussell enthält zu jeder Zeit 12 einzigartige Beiträge. Ich kann den Offset nicht erhöhen, denn wenn ich fünf oder sechs Beiträge in einer Reihe von einer Kategorie bekomme, dann würden sie im folgenden Abschnitt übersehen, wenn der Offset erhöht wird.

Ich hoffe das macht Sinn. Ich bin mir nicht einmal sicher, ob mein Ziel erreichbar ist (!). Muss das alles innerhalb der einen Schleife gemacht werden?

Das Karussell ist eine Schleife – es funktioniert mit dem folgenden Code:

 

woher

 <div id="panel" class="panel"> 

von

  

Vielen Dank,

Andy

Solutions Collecting From Web of "PHP wenn Post schon angezeigt wird, dann"

Verfolgen Sie die IDs und “ausschließen” Sie sie mit post__not_in . Es ist schwer zu sagen, was genau mit der unzusammenhängenden Art, wie Sie Ihren Code gepostet haben, ist, aber die allgemeine Falllösung ist ..

 $c_posts = new WP_Query("showposts=10"); $tracker = array(); if ($c_posts->have_posts()) { while ($c_posts->have_posts()) { $c_posts->the_post(); $tracker[] = get_the_ID(); // more code } } $other_loop = new WP_Query(array('post__not_in' => $tracker)); 

Abhängig davon, wie viel Kontrolle Sie über Dinge haben, gibt es andere Möglichkeiten, dies zu tun. Zum Beispiel, wenn Sie 5 Beiträge im Karussell und 10 im Körper benötigen, können Sie alle 15 auf einmal ziehen, verwenden Sie die ersten fünf im Karussell und den Rest später verbrauchen, so sparen Sie sich eine Abfrage.

Referenz

http://codex.wordpress.org/Class_Reference/WP_Query

Wenn Ihr Schieberegler Beiträge in einer bestimmten Kategorie anzeigt, die durch die Variable $panel definiert wird, können Sie die Schieberegler sauber vom normalen Fluss trennen.

Schieberegler anzeigen

Verwenden Sie das new WP_Query() in Ihrer Vorlage, um den Schieberegler auszugeben:

 $slider = new WP_Query( array( // 'showposts' is deprecated; use 'posts_per_page' 'posts_per_page' => 10, // For an integer; // if $panel is a string (category slug), use 'category_name' 'cat' => $panel ) ); if ( $slider->have_posts() ) : while ( $slider->have_posts() ) : $slider->the_post(); // Slider loop/markup here endwhile; endif; wp_reset_postdata(); // Normal loop here if ( have_posts() ) : while ( have_posts() ) : the_post(); // Normal loop markup endwhile; endif; 

Filtern Sie die Abfrage der Hauptschleife

Fügen Sie einen Filter Callback zu functions.php , um die Schieberegler zu filtern:

 function wpse99748_filter_pre_get_posts( $query ) { if ( ! is_singular() && $query->is_main_query() ) { $panel = array(); // Need to use ID here $query->set( 'category__not_in', $panel ); } } add_action( 'pre_get_posts', 'wpse99748_filter_pre_get_posts' );