Beiträge sollen nicht doppelt angezeigt werden

  • Guten Abend,

    ich habe ein etwas komplizierteres Problem mit der Abfrage von Beiträgen.
    Auf meiner Seite stilgeschenk - stilvolle, besondere und ausgefallene Geschenke und Geschenkideen stellen wir täglich Geschenkideen ein, diese sind unterschiedlichen Personengruppen (Frauen, Männer, Paare, Kinder...) zugeordnet.
    Wie ihr seht, werden oben im Theme immer jeweils der neuste Beitrag für "Frauen", "Männer" und "Kinder" angezeigt.

    Jetzt zu meinem Problem: Wenn ein Geschenk (wie es oft passiert) beispielsweise für Männer & Frauen geeignet ist, und der Beitrag folglich beiden Kategorien zugeordnet ist, wird auf der Startseite zweimal das selbe Geschenk gezeigt, einmal bei "Männer" und einmal bei "Frauen".

    Die drei oberen Beiträge werden jeweils über eine Abfrage

    <?php query_posts('cat=4&showposts=1'); ?>
    <?php while (have_posts()) : the_post(); ?>

    abgefragt.
    Ist es möglich, dass die Abfragen untereinander "kommunizieren" nach dem Motto "Wenn bei Männer der Beitrag schon steht, dann wird nicht der neuste sondern der zweit neuste Beitrag ausgegeben"?

    Wäre über Hilfe sehr dankbar...

    Viele Grüße
    Frank

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ja. Das Zauberwort heißt: "post__not_in".
    Template Tags/query posts WordPress Codex

    Dann müsste ich jedoch jeden Tag, wenn neue Artikel eingestellt werden, die Abfrage neu bearbeiten, oder? Dann könnte ich die Abfrage gleich über die Post-ID machen und einfach alle drei Abfragen jeden Tag ändern... ich hätte es gerne "eigenständig" und eben "dynamisch" - wenn man das so sagen kann.

    Trotzdem Danke für den Vorschlag.

  • Du kannst die die Post-IDs der oben bereits ausgegebenen Posts merken und unten dann ausschließen. Genau diesselbe Frage hab ich vor ein paar Wochen schon einmal beantwortet, mal schauen ob ich den Thread noch finde... ah da isser ja:
    http://forum.wordpress-deutschland.org/design/51686-d…ausblenden.html

    Ok, das scheint ja doch irgendwie zu gehen. Vielen Dank für den Link. Leider komme ich damit auch nicht so recht weiter, da mein Quellcode (Theme Equilibrium) wohl etwas anders aufgebaut ist und ich leider kein PHP-Spezialist bin...
    Hilft es vielleicht, wenn ich hier mal bestimmte Teile des Quellcodes poste?

  • Also die Ausgabe der oberen drei Beiträge sieht wie folgt aus:


    Schön wäre es, wenn ich quasi bei der zweiten und der dritten Abfrage sagen könnte, dass er schauen soll, dass nicht der selbe Beitrag wie in Abfrage 1 bzw. 2 ausgeben soll.

    Der untere Teil der Seite (18 kleinere Previews der 18 neusten Beiträge) kann bleiben wie er ist...


  • So vom Ansatz her, dass du weißt wie's geht. Ist jetzt nur shcnell hingetippt, aber das Prinzip sollte klar werden.

  • Wow... vielen Dank. Ich habe jetzt mal versucht, dass auf die drei Beiträge anzuwenden und folgenden Quellcode gebastelt:

    Ich habe versucht, die ID des ersten Beitrags zu "merken". In der zweiten Abfrage soll dann diese ID ausgeschlossen, ein anderer Beitrag angezeigt und dessen ID ebenfalls "gemerkt" werden. In der dritten Frage muss dann nur noch abgefragt werden, welche schon angezeigt wurden. Die ID dieses Posts muss ja nichtmehr "gemerkt" werden...

    Nunja, leider funktioniert das ganze so nicht :/ ich verzweifel langsam echt. Was mach ich falsch???

  • Die Zeile hier:

    PHP
    <?php $duplicate_posts = array(); ?>


    brauchst du nur ganz am Anfang, um das Array zu initialisieren (d.h. ein neues, leeres Array anzulegen). Diese Zeilen:

    PHP
    $duplicate_posts[] = $post->ID;


    fügt dann jeweils die ID des gerade aausgegebenen Posts zum Array hinzu. Klar soweit?

  • Okay Danke... ;) mal schauen ob ichs jetzt hinbekomm :) du kannst mir - falls du willst - auch gerne kurz im ICQ / Skype schreiben (ICQ: 141451294 / Skype: frnk89) ...

    Nachtrag: Also irgendwie will es noch immer nicht. Habe den Code wie oben gepostet, nur eben diese Zeile rausgelöscht, wo du meintest, sie is überflüssig... er zeigt jedoch immernoch 2x den selben Beitrag an.

    Einmal editiert, zuletzt von frnk (30. Mai 2009 um 13:27)

  • du kannst mir - falls du willst - auch gerne kurz im ICQ / Skype schreiben


    Sorry, grad nicht verfügbar, bin nicht am eigenen PC... ;-)

    Und nochmal sorry - Tippfehler! Wie ich schon weiter oben schrieb, der Parameter für query_posts() heißt "post__not_in", ohne 's'. ;-) Der Rest sieht gut aus, müsste dann also eigentlich funktionieren.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!