WordPress: Entfernen Sie doppelte Beiträge in mehreren Schleifen

(che poi sono fondamentalmente la stessa cosa) di WordPress permette di ottenere una lista di post impostando numerosi parametri di ricerca (vedi Very short snippet: visualizzare una lista di post per categoria o tag ). Die nützliche Funktion query_posts() oder Objekt WP_Query (was im Grunde dasselbe sind) WordPress ermöglicht es Ihnen, eine Liste von vielen post-Einstellung Suchparameter zu erhalten (siehe Sehr kurze Auszug: Zeigt eine Liste der Beiträge nach Kategorien oder Tags ). Gerade wegen seiner Vielseitigkeit auf der Suche nach post kann passieren, dass die Funktion mit zwei-oder mehrmals in einer Zeile, die Sie die "doppelte" zu bekommen. Dies kann passieren, zum Beispiel bei der Suche (Filterung) für TAG, eine Post, in der Tat kann (in der Tat hat es in den meisten Fällen) haben tags verbunden. . Daraus folgt, dass die Liste der Beiträge mit TAG A kann auch nach einer Liste der Beiträge mit dem TAG B .

Zur Behebung dieses Problems können Sie auf zwei verschiedene Arten vorgehen, je nach Version von WordPress. Die erste ist, beiseite alle IDs der ersten Schleife, so dass sie in der zweiten auszuschließen. Diese Technik kann für eine beliebige Anzahl von Schleifen und den Vorteil der Kompatibilität mit älteren Versionen von WordPress verwendet werden:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/ / Erste Schleife
/ / Das Array $ ids [] unter den Überblick zu behalten von gebrauchten
/ / Id der Post, dass ich kam mit der ersten Schleife
array ( ) ; $ Ids = array ();
) ; query_posts ('category_name = Flash & showposts = 10');
have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
= $post -> ID ; $ Ids [] = $ post -> ID;
/ / ... Ausgang
endwhile;

/ / Zweite Schleife
/ / In diesem Fall wird der Ausgang nur, was
/ / $ Post-> ID ist nicht in der $ ids [] vorhanden
) ; query_posts ('category_name = Adobe & showposts = 10');
have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
! in_array ( $post -> ID , $ids ) ) { if ( in_array ($ post -> ID, $ ids)) {
/ / ... Ausgang
}
endwhile;

Wenn die Freisetzung von WordPress ist, dass wir mit 2.6 oder höher, können wir eine Variante comodoa der zweiten Schleife gilt:

1
2
3
4
5
6
7
8
9
10
11
12
/ / Zweite Schleife
/ / WordPress 2.6 +
/ / In diesem Fall ist es direkt query_posts (), um
/ / Schließen Sie die IDs der Beiträge bereits angezeigt
query_posts (
'showposts' => 10 , array ('showposts' => 10,
4 , 'Cat' => 4,
$ids , "Post__not_in '=> $ ids,
));
have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
/ / ... Ausgang
endwhile;

Die Option post__not_in zusammen mit anderen, ist gut dokumentiert hier .

4 Kommentare zu "WordPress: Löscht doppelte Beiträge in mehreren Schleifen"

  1. 2. Juli 2009 Undolog.com »Wordpress: entfernen Sie doppelte Beiträge in mehreren Schleifen :

    [...] Original-Artikel: Undolog.com »WordPress: Löscht doppelte Beiträge in mehreren Schleifen In Verbindung stehende Artikel: Undolog.com" Sehr kurze Auszug: Wordpress, bald auf [...]

  2. 4. Juli 2009 Wordpress: entfernen Sie doppelte Beiträge in mehreren Schleifen :

    [...] Quelle: WordPress: Löscht doppelte Beiträge in mehreren Schleifen In Verbindung stehende Artikel: Undolog.com »WordPress: Löscht doppelte Beiträge auf dem Laufenden [...]

  3. 4. Juli 2009 Das Beste der Woche # 24 | BigThink :

    [...] WordPress: Löscht doppelte Beiträge in mehreren Schleifen Ein kleiner Trick, um eine Wiederholung zu vermeiden post, wenn wir zwei Schleifen auf der gleichen Seite haben. [...]

  4. 5. April 2010 Nikopolidis :

    Sehr interessanter Artikel, ich habe eine Frage, die die Ausführung des Skripts implementieren könnte:
    mit diesem Code, wenn ich auf der zweiten Seite klicken, I automatisch wieder das gleiche nach der ersten. Wie kann ich das vermeiden? :)

    Dank

Hinterlasse einen Kommentar

XHTML TAG PERMIT: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERTION CODE:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL 


Stoppen SOPA