Cookies müssen vor jeglicher Ausgabe eines Scriptes gesetzt werden. Auch vor dem einleitenden “<html>” oder ”<head>” Es dürfen auch keine Leerzeichen oder Leerzeilen vor dem Befehl “setcookie” benutzt werden. In Wordpress können Cookies über die functions.php initialisiert werden , die dieses Problem ausschliesen.
Man kann Cookies auch in die header.php setzen, dann darf aber in der index.php kein Aufruf oder Leerzeichen vor “get_header” sein. Das gleiche gilt auch für die page.php, single.php etc.
Eine andere Möglichkeit ist, das Cookie vor "get_header" in die index.php zu setzen.
Die obigen Variationen funktionieren allerdings nur, wenn vorher keine Ausgabe durch die “functions.php” oder durch Plugins stattfindet.
Deshalb ist zu empfehlen, ein Cookie über die “functions.php” zu setzen.
functions.php
Die Cookie-Funktion sollte vor anderen Funktionen direkt nach dem einleitenden “<?php” gesetzt werden.
function tec_set_cookie() {
$name = 'cookiename';
$wert = 'mein-wert';
$t = time()+60*60*24*30;
setcookie($name, $wert, $t, '/');
}
add_action( 'init', 'tec_set_cookie' );
add_action( 'init', ' tec_set_cookie' ) bewirkt, dass der Aufruf vor dem eigentlichen Template stattfindet.
Es können auch mehrere Cookies mit “setcookie” in die Funktion eingefügt werden.
Wenn die Cookies gesetzt wurden, sind sie beim nächsten Seitenaufruf verfügbar. Über die Variable “$_COOKIE['cookiename']” wird darauf zugegriffen.
Die Parameter von setcookie
setcookie( Name, Wert, Zeit, Pfad, Domain, Sicherheitsstatus )
- Name: Es muss ein eindeutiger Name für den Cookie vergeben werden.
- Wert: Der Inhalt des Cookie.
- Zeit: Der Zeitraum wie lang der Cookie gültig ist wird in Sekunden angegeben. ist "0" gesetzt, verfällt das Cookie wenn der Browser geschlossen wird.
- Pfad: Der Pfad auf dem Server. Das Zeichen '/' steht für die gesamte Domain. Ist '/verzeichnis/' gesetzt, gilt das Cookie nur für das Verzeichnis mit allen Unterverzeichnissen.
- Domain: Es kann das Cookie für Subdomains begrenzt werden.
- Sicherheitsstatus: Ist der Wert auf "true" gesetzt, greift das Cookie nur über eine sichere HTTPS-Verbindung.
Es sollte beachtet werden, dass nicht alle Nutzer Cookies zulassen und sie im Browser ausschalten. In solchen Fällen können Session benutzt werden, die auf dem Server abgelegt werden.
Weitere Informationen:
- Session in Wordpress
- Sidebar erstellen
- Navigationsmenü in Wordpress Themes einbauen
- Formatvorlagen PostFormats in Wordpress
- Index.php erstellen