Duplikate im Loop von WordPress filtern

bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.

Kommentare

  
  1. Schön erklärt und gut umsetzbar. Ich verwende diese Variante bereits seit längerem auf meinem Blog http://www.der-prinz.com. Interessant wäre nun noch eine Lösung, die in nur EINEM Loop Duplikate vermeidet.

    Beispiel: Wenn ein Beitrag in Kategorie 1 und in Kategorie 2 abgelegt ist und die jeweils drei aktuellsten Beiträge beider Kategorien im Loop ausgegeben werden, soll der Beitrag aber nur einmal angezeigt werden.

  2. Markus sagt:

    Guter Artikel. Hab diese Lösung genau so auch schon lange im Einsatz Gerade wenn man WP mehr als CMS einsetzt kommt man ohne diese Lösung fast nicht mehr aus.

  3. Danke Frank, nachdem ich ihn schon so damit genervt habe 🙂
    Hab das bei mir nun auch im Einsatz auf der Startseite: http://www.davidhellmann.com und es klappt wunderbar!!

  4. Steffen sagt:

    Sollte man vielleicht erwähnen, in Variante 1 von Loop2 erscheinen eben gerade nicht die gewünschten 15 Postings, wenn es tatsächlich doppelten Content rauszufiltern gibt. Richtig?
    Von daher wäre die Variante 2 von Loop2 ja eh vorzuziehen.
    Kann man nicht sogar sagen, dass nur Variante 2 das eigentlich WP-Bordmittel nutzt, da Variante 1 einfach nur ein Argument, welches die Funktion query_posts() mitbringt, nicht nutzt?

    • Die Variante 2 nutzt einen Parameter, während Loop Nr. 2 der Variante 1 das Filtern via PHP-Bordmitteln tut. Besser ist Variante 2, da es dann auch 15 Beiträge sind, wenn es die IDs im Array gibt. Ansonsten kann es sein, dass nur ein Teil der Artikel kommt, es wird der Loop nicht erweitert.

  5. Mark sagt:

    Den post_not_in - Parameter kannte ich noch nicht. Sehr praktisch. Ich finde auch, dass damit die zweite Variante noch etwas besser ist.

  6. Nick sagt:

    Hallo Frank,

    danke für den schönen Tipp.
    Ich baue mir grade ein Magazin-Theme worin ich diese Funktion super einbauen kann.

    Leider klappt dies aber nicht ganz so wie ich das will, deshalb brauche ich deinen Rat.

    Ich gebe auf meiner Startseite 5 Kategorien aus.
    In den Kategorien befinden sich jeweils 3 Artikel (1Großer, 2 Kleine) und eine Liste.
    Insgesammt sollen die letzten 10 News ausgegeben werden (die 3 Artikel und die restlichen 7 sollen als Liste dargestellt werden.).

    Soweit so gut.
    Ich habe es hin bekommen das er mir die ersten 3 Artikel ausgibt, in der Liste aber zeigt er mir wieder alle Artikel bis auf den Aktuellsten an (also Dublikate).

    Eigentlich ist es auch Logisch da er sich ja nur auf die eine ID des ersten Beitrages bezieht.
    Da ich aber pro Beitrag einen Loop habe müsste man das ganze in ein extra Array abspeichern, leider habe ich keine Ahnung wie das gehen soll.

    Vllt. kannst du mir da weiterhelfen.
    Meinen Code würde ich dir gern Parallel per Mail rüberschicken + ein Screenshoot für ein besseres optisches Verständnis.

    Danke!

    • @Nick: Die ID des Post speichere ich in $do_not_duplicate[] = $post->ID;, also hat diese Variable alle IDs drin, die nun im Loop ausgegeben werden. Daher muss nun im jeweiligen Loop geprüft werden, ob die ID da schon drin ist, wenn ja, dann keine Ausgabe if ( !in_array( $post->ID, $do_not_duplicate ) ) {. Eventuell lohnt es, vor jedem Loop den Query zu reseten, immer nach der Loop(endwhile): endwhile; wp_reset_query();

  7. Stefan sagt:

    Hallo Frank,

    danke für diesen ausführlichen Artikel.

    Aber besteht auch die Möglichkeit in einem Loop eines Seiten-Templates, Artikel und eine Seite auszugeben?

    Bspl.:

    get header

    maincol - Hier soll eine seite ausgegeben werden
    php ??????? ?

    artikel - Hier sollen Artikel ausgegeben werden
    php if (have_posts()) : while (have_posts()) : the_post();

    get sidebar
    get footer

    Hoffe Du kannst mir den helfenden Tipp geben.

    Danke. VG Stefan

    • @Stefan: ja sicher, man kann auch da eigene Loops aufbauen. Im Grunde kann man das beliebig oft machen; aber bitte die Performance nicht außer acht lassen. Alternativ arbeite mit dem WP_Query

© 2016, since 2005 bueltge.de [by:ltge.de] · Theme is built by ThemeShift