Plugin tj_site_news und das loop im Seitentemplate

  • Hallo,
    ich habe ein Problem mit dem Plugin tj_site_news und einem selbst gestricktem Seitentemplate und muss gerade feststellen, daß ich mit meinen rudimentären php- und wp-code-Kenntnissen nicht mehr weiter komme. :-?
    Ich habe mir folgendes Seitentemplate gebastelt:

    Das Template listet auf der entsprechenden Seite die Beiträge einer bestimmten (hier: 141) Kategorie auf. Funktioniert auch einwandfrei.
    Wenn ich den Loop richtig verstanden habe, spricht man vom Loop, wenn mit der while-Schleife " if (have_posts()) : while (have_posts()) : the_post(); " geprüft wird ob posts vorliegen, sprich ein Loop wird gestartet (ist das so richtig?).
    Das bedeutet, in meinem Template wird zweimal ein Loop gestartet. Einmal um die Seite aufzurufen und einmal um die Artikel einzulesen. Richtig?
    Ob das grundsätzlich richtig gelöst ist, weiss ich nicht, aber es funktioniert.

    Dann noch das Plugin tj_site_news, dies blendet eine Art Banner als erstes auf der Seite ein, wo man aktuelle Hinweise u. ä. anzeigen lassen kann.

    Lange Vorrede (schön, das Du noch Da bist...:)), aber jetzt zu meinem eigentlichen Problem:

    Das Plugin wird mit jedem aufgerufenen Loop-Start durch vermutlich folgenden Code aufgerufen:

    PHP
    //    Display table for site news.
    add_action('loop_start', 'tj_site_news');

    Das hat im Fall meines vorbeschriebenen Templates zur Folge, das es zweimal auf der Seite erscheint, weil der Loop ja zweimal aufgerufen wird.

    Nun meine Frage, wie kann ich die zweite Anzeige unterdrücken?
    Meine Idee war das add_action irgendwie in eine if-Abfrage zu packen, die prüft, ob die Funktion schon aufgerufen wurde. Ich bekomm´s nur nicht hin.

    Kann mir da mal jemand unter die Arme greifen?
    Bin auch für andere Lösungsansätze (nur einer Loop-Schleife im Template?) offen.

    Danke schon mal,
    Jan

    • 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

  • Kompliziertes Problem, aber schön erklärt. Kompliment! :-D Deine Grundannahmen sind soweit auch richtig.

    Versuch mal folgendes: nachdem der 1. Loop beendet wurde entfernst du die Aktion wieder. Einfach vor dem 2. Loop, vor dem $more = 0 vielleicht, folgende Zeile einfügen:

    PHP
    <?php remove_action('loop_start', 'tj_site_news'); ?>

    Schau mal ob das was bringt.

Jetzt mitmachen!

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