Problem bei doppelter Verwendung von wp_list_pages

  • Nabend zusammen,

    ich versuche derzeit in eins meiner Themes an zwei unterschiedlichen Stellen (einmal in der page.php und einmal als Widget) die Funktion wp_list_pages einzubinden, was im Prinzip auch ganz gut klappt. Solange jeweils nur ein Aufruf erfolgt, wird die gewünschte Liste auch vernünftig ausgegeben.

    Wenn allerdings auf einer Seite beide Version vorhanden sind, funktioniert lediglich der erste Aufruf. Der zweite wird dann nicht mehr ausgeführt und stattdessen der komplette HTML-Output gestoppt. Nehme ich den ersten Aufruf dagegen raus, funktioniert der zweite einwandfrei.

    Fehlermeldungen auf PHP-Seite (auch mit error_reporting) gibt es keine, weswegen ich ein wenig ratlos bin. Habt Ihr eventuell eine Idee?

    Besten Dank schon mal im Voraus!

    Viele Grüße
    Whooper

    • 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

  • Fehlermeldungen auf PHP-Seite (auch mit error_reporting) gibt es keine, weswegen ich ein wenig ratlos bin. Habt Ihr eventuell eine Idee?


    display_errors auf on? Sonst mal ins error.log schauen.

    Im Prinzip ist kein Problem, 2x wp_list_pages() zu rufen, machen ja fast alle WP-Seiten (z.B. Top-Menü + Sidebar).

  • Dann beschreib mal etwas näher, was du wie machst. Beispielcode, vielleicht hilft auch ein Link zur Problemseite weiter. Mit "Widget" meinst du das Seiten-Widget, oder einfach nur den Code in der Sidebar?

  • Der erste Aufruf erfolgt direkt in der page.php und sorgt für eine Art Inhaltsverzeichnis mit allen untergeordneten Seiten der aktuellen Seite.

    PHP
    $sub_pages = wp_list_pages('title_li=&child_of='.$post->ID.'&sort_colum=post_name&echo=0');
    if($sub_pages) {
        echo '<div style="border: 1px solid red; margin: 10px auto; width: 90%;">';
        echo '<div style="margin: 10px; font-weight: bold;">Inhaltsverzeichnis <span style="font-weight: normal;">[<a href="#" onclick="switchDirectory();" id="switcher">Anzeigen</a>]</span></div>';
        echo '<ol id="directory" class="directory-hide">';
        echo $sub_pages;
        echo '</ol>';
        echo '</div>';
    }

    Der zweite Aufruf erfolgt als Widget und soll sämtliche Seiten auflisten, die sich auf der selben Ebene befinden, wie die aktuell angezeigte Seite.

    Das ist jetzt natürlich nur ein kleiner Auszug aus dem Widget. Am Widget selbst scheint es aber ohnehin nicht zu liegen, da es ohne den ersten Aufruf von wp_list_pages einwandfrei funktioniert.

    Ein fester Einbau in die sidebar.php führt übrigens zum selben Ergebnis:

    PHP
    <li>
                    <ul>
    <?php $related_pages = wp_list_pages('title_li=&depth=1&child_of='.$post->post_parent.'&sort_colum=post_name&echo=1'); ?>
                    </ul>
                </li>

    Vielleicht lässt sich da ja irgendwo ein Fehler finden? :)

    Gruß
    Whooper

  • Sind alle Variablen vorhanden und enthaltn auch den korrekten Wert? Lass dir mal alle benutzten Variablen unmittelbar vor der Benutzung mit var_dump() ausgeben. Vielleicht enthält eine nicht (mehr) das was du erwartest.

  • Dann wirst du wohl weiter forschen müssen, welcher Fehler für den Abbruch verantwortlich ist. Also Error-Reporting, Display-Errors und error.log korrekt einstellen. (Werden andere Fehler geloggt? Evtl. mal einen provozieren)

  • Besten Dank für Deine bisherige Hilfe, marX.

    Andere Fehler werden über das error_reporting ausgegeben, bloß zu dieser Sache gibt es keinerlei Hinweis. Es ist irgendwie wie verhext.

    Naja, ich schau mal weiter. Falls ich was finden sollte, werde ich des Rätsels Lösung natürlich hier reinschreiben.

    Gruß
    Whooper

Jetzt mitmachen!

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