Die PHP-Funktion setcookie() funktioniert nicht in der WordPress-Vorlagendatei

Lesezeit: 2 Minuten

Benutzer-Avatar
akifquddus

Ich verwende diesen Code, um ein Cookie auf einer WordPress-Site zu setzen. Wenn ich diesen Code in header.php platziere, funktioniert es perfekt. Aber wenn ich diesen Code in eine separate Vorlagendatei platziere, funktioniert es nicht. Header-Dateicode: (vor HTML-Tag)

if (isset($_COOKIE['City'])) {
setcookie('City', 0, -(3600*3600*3600));
setcookie('City', "Edmonton2", 3600*3600*3600);
}
else {
setcookie('City', "Edmonton", 3600*3600*3600);
}

Code der WP-Vorlagendatei: (Code steht vor der Funktion get_header())

<?php 
if (isset($_COOKIE['City'])) {
setcookie('City', 0, -(3600*3600*3600));
setcookie('City', "Edmonton2", 3600*3600*3600);
}
else {
setcookie('City', "Edmonton", 3600*3600*3600);
}
?>
<?php
/*
    Template Name: Community Landing Page
*/
get_header(); ?>

Jede Hilfe wäre sehr willkommen. Danke & Grüße

Benutzer-Avatar
exussum

Sie können kein Cookie setzen, nachdem die Ausgabe gestartet wurde. Cookies und alle anderen HTTP-Header-Informationen können nur gesetzt werden, bevor die Ausgabe gestartet wurde. Ausgabe kann alles bedeuten, von einem leeren Platz vor PHP-Tags bis hin zu tatsächlichem HTML-Inhalt.

Sie sollten niemals Kekse in einen Körper stecken müssen. Die gesamte Logik sollte ausgeführt werden, bevor mit der Ausgabe von Vorlagen begonnen wird.

  • Ich habe den Code in header.php vor dem HTML-Tag hinzugefügt und es funktioniert. In der Vorlagendatei habe ich es hinzugefügt, bevor ich die Funktion get_header() aufrufe. Ich habe auch versucht, die Funktion get_header() zu entfernen und dann das gestartete HTML-Tag fest zu codieren und den Code davor zu setzen, aber das hat auch nicht funktioniert.

    – akifquddus

    23. Dezember 2013 um 20:57 Uhr

  • Ersetzen Sie den Code durch echo "blah blah blah"; Wenn dieses Echo nicht das erste ist, was beim Anzeigen der Quelle zu sehen ist, funktioniert es nicht und Sie müssen den Code neu anordnen

    – Exussum

    23. Dezember 2013 um 21:07 Uhr


  • Gerade überprüft, es ist das erste, was auf der Seite. Auch überprüft, indem echo “checking” in header.php platziert wurde und “blah blah testing” als Ausgabe erhalten wurde. Als Echo steht “bla bla” in der Vorlagendatei.

    – akifquddus

    23. Dezember 2013 um 21:16 Uhr

  • In WordPress kann dies oft der Fall sein, Plugin-Skripte haben zufällige Leerzeichen am Ende, die entfernt werden müssen. Standardmäßig unterdrückt WordPress Fehler, die Ihnen mitteilen, wo Sie suchen müssen. Fügen Sie dies also vor dem Code hinzu, den Sie debuggen möchten, um einige Hinweise zu erhalten: ini_set('display_errors',1); error_reporting(E_ALL ^ E_STRICT);

    – Andreas

    21. Dezember 2014 um 22:12 Uhr

Das Problem war, dass ich den Pfad in der Funktion nicht erwähnt habe. Der Code erstellte ein Cookie für die bestimmte Seite. Hier die korrigierte Funktion:

setcookie('City', "Edmonton43003", (time()+3600), "https://stackoverflow.com/");

1176150cookie-checkDie PHP-Funktion setcookie() funktioniert nicht in der WordPress-Vorlagendatei

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy