Wordpress, Ajax und Cookies
Posted on Sa 06 September 2014 in Blog
Neulich bin ich bei der Entwicklung eines Wordpress-Plugins über die Notwendigkeit gestolpert ein Cookie zu setzen. So weit so gut und eigentlich auch kein Problem. Die Syntax einfach
setcookie("name", "wert", "Lebensdauer");
Schon mehrfach so bei anderen Projekten verwendet, aber bei Wordpress macht es "Probleme", da die Ajax-Requests über admin-ajax.php im Ordner wp-admin laufen und in meinem Fall das Cookie erst nach dem ersten Ajax-Request gesetzt wurde. Damit war das Cookie für das Plugin, das naturgemäß im Ordner wp-content liegt, nur bei Ajax-Requests verfügbar und nicht bei einem "normalen" Seitenaufruf. Zur Hilfe kommt die PHP-Dokumentation:
"path
Der Pfad auf dem Server, für welchen das Cookie verfügbar sein wird. Ist er auf '/' gesetzt, wird das Cookie innerhalb der gesamten domain verfügbar. Ist er auf '/foo/' gesetzt, wird das Cookie nur innerhalb des Verzeichnisses /foo/ sowie allen Unterverzeichnissen wie z.B. /foo/bar/ der domain verfügbar. Der Standardwert ist das aktuelle Verzeichnis, in dem das Cookie gesetzt wurde."
Cookie mit folgendem Code erstellen und es ist auch bei normalen Seitenaufrufen verfügbar:
setcookie("name", "wert", "Lebensdauer", "/");