have_posts im Loop verwenden

  • Mal wieder eine kleine Frage: Ich möchte in meinem Loop testen, ob noch weitere Beiträge kommen, weil ich dann einen Spacer dazwischen ausgeben würde. Von Iteratoren aus der Programmierung kennt man das ja, dass man im Loop so oft man möchte hasNext() oder so aufrufen kann. Bei WordPress führt folgendes aber lustigerweise zu einer Endlosschleife:

    PHP
    while (have_posts() : the_post()) {
      ...
      if (have_posts()) { ... }
    }

    Offensichtlich wird innerhalb von have_posts() die Methode rewind_posts() aufgerufen. Klar kann ich die Methode kopieren und anpassen für meinen Zweck. Bevor ich das mache dachte ich frage ich mal ob es eine einfachere Variante gibt. Hm, kann man die Anzahl der Beiträge auslesen?!

    • 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

  • Nur zur Info für andere mit dem gleichen Problem: Ich habe das jetzt über die folgende Funktion gelöst. Danke marX für den Hinweis, ich glaube das hatte mich da auf die richtige Spur gebracht. ;-)

    PHP
    /**
     * Returns true if there is another post in the loop, false otherwise, but
     * doesn't rewind the posts like have_posts() does.
     * 
     * @return True if there is a next post in the loop, false otherwise.
     */
    function my_hasNextPost() {
      global $wp_query;
      return ($wp_query->current_post + 1 < $wp_query->post_count);
    }

Jetzt mitmachen!

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