wp_query lässt sich nicht sichern

  • Habe folgendes Problem. Der Kategorie Name und ID stimmen nicht mehr nach Einbindung der sidebar. Brauche aber die richtige Kategorie ID für die Weiterverarbeitung im footer. Vor Einbindung der sidebar stimmt die ID noch.
    Jetzt wollte ich den Query sichern und nach der Einbindung wieder zurück schreiben . Funktioniert aber auch nicht. Weiß jemand wie es richtig wäre ?

    So hab ich es versucht:

    PHP
    <?php $temp_query = clone $wp_query; ?>
    
    
    <?php get_sidebar(); ?>
    
    
    <?php $wp_query = clone $temp_query; ?>
    • 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

  • Zuerst mal wäre es natürlich schöner, das Problem gleich zu vermeiden als es nur zu umgehen. Falls Du also weißt, wo die Query unnötig überschrieben wird, wäre es besser, das dort zu beheben.

    Das kann jetzt natürlich auch ein Widget aus einem Plugin sein, das man dann vielleicht nicht ändern möchte. Dann wäre Dein grundsätzlicher Workaroundgedanke schon richtig. Arbeitest Du denn dann im Footer irgendwie mit der Query? Bin mir auf Anhieb nicht sicher, ob die als globale Variable überhaupt existiert und ob Du dafür ein clone bräuchtest.

    Aufheben solltest Du auf jeden Fall die Werte der Variablen $posts und $post (letzteres in der single.php und page.php). Das wäre ja normalerweise auch das, was Du dann im Footer oder so weiterbenutzen würdest und was dann ggf. auf die falschen Beiträge zeigt.

  • Zuerst mal wäre es natürlich schöner, das Problem gleich zu vermeiden als es nur zu umgehen. Falls Du also weißt, wo die Query unnötig überschrieben wird, wäre es besser, das dort zu beheben.

    Das kann jetzt natürlich auch ein Widget aus einem Plugin sein, das man dann vielleicht nicht ändern möchte. Dann wäre Dein grundsätzlicher Workaroundgedanke schon richtig. Arbeitest Du denn dann im Footer irgendwie mit der Query? Bin mir auf Anhieb nicht sicher, ob die als globale Variable überhaupt existiert und ob Du dafür ein clone bräuchtest.

    Aufheben solltest Du auf jeden Fall die Werte der Variablen $posts und $post (letzteres in der single.php und page.php). Das wäre ja normalerweise auch das, was Du dann im Footer oder so weiterbenutzen würdest und was dann ggf. auf die falschen Beiträge zeigt.

    Es ist ein ziemlich kompliziertes Theme das in der sidebare den Wert verändert. Leider schaff ich es nicht das ich den Query wieder zurücksetze. Die Änderung ist im folgenden Code in der sidebare:

    also ziemlich undurchsichtig. Warum aber mein Workaround nicht geht weiß ich nicht. Clone wird benötigt da ich mit Version PHP5 arbeite! Vielleicht geht es ja nicht mit dem XAMPP was ich mir aber nicht vorstellen kann!?

  • Ich denke, richtig müsste das so aussehen (rot markiert, habe nur den relevanten Teil eingefügt):

    Falls das noch nicht reicht, müsste man eventuell noch den Wert der $post-Variablen aufheben.

    Einmal editiert, zuletzt von Ammaletu (21. Januar 2010 um 20:47)

  • Tja, ich kopier Dir hier aus meinen eigenen alten Templates, was mir richtig erscheint. Testen musst Du selber, da fehlt mir die Zeit dazu, und Flüchtigkeitsfehler beseitigen ggf. auch. Soweit ich das aber gerade sehe, ändert query_posts nur die aktuelle Query, es macht keine zweite, neue. Dann also eher so:

  • Danke für deine Arbeit.
    Jetzt funktioniert die sidebar wieder aber das Ergebnis ist das gleiche !
    Versteh einfach nicht warum die Kategorie nach dem Loop eine andere ist und man diese nicht zurücksetzen kann.

    Ich lass mir die Kategorie vor Einbindung und nach Einbindung der Sidebare so anzeigen :

    Ergebnis:
    2973
    <?php get_sidebar(); ?>
    3048

    also wird die Kategorie in der sidebare verändert und bleibt so oder ?

  • Ok, wir nähern uns der Sache iterativ. ;-) Probier mal das hier:

    ?>

    Der Grund ist nämlich bestimmt, dass get_the_category die Variable $post benutzt, wo soll es die Kategorie auch sonst hernehmen. Und die wird im Sidebar-Loop ja mit anderen Posts überschrieben.

  • Super das funktioniert jetzt ! Mir fehlt einfach noch das Verständniss für die internen Abläufe.
    Die Kategorie wird also anhand des Artikel ermittelt!

    Dann hast du jetzt die Variable $post vor der sidebar in eine variable gesichert und wieder zurückgeschrieben.

    Kann man die $post nicht einfach reseten?

    Auf jeden Fall schon mal danke. Hab wieder was gelernt. Mühsam ernährt sich das Eichhörnchen :-)

  • Zitat

    Kann man die $post nicht einfach reseten?

    Ich glaube, es gibt auch etwas á la reset_query oder so. Müsstest Du mal im Codex schauen. Aber da es so ja geht, benutze ich das normalerweise nicht.

Jetzt mitmachen!

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