it-swarm.com.de

So setzen Sie benutzerdefinierte Cookies vor der Ausgabe

Was ist ein todsicherer Weg, um Cookies zu überprüfen/zu setzen, bevor die PHP-Header gesendet werden? Gibt es eine Aktion oder einen Filter, die bzw. der der beste Ort wäre, um eine Funktion setcookie() zu verknüpfen?

4
Dan Gayle

Hängt davon ab, ob Sie die Benutzerauthentifizierung von WordPress überprüfen müssen. Wenn Sie wissen möchten, ob es sich um einen angemeldeten Benutzer handelt, melden Sie sich bei 'init' an. Ansonsten ist es umso besser, je früher.

Wenn es etwas ist, das bei jedem Seitenaufruf ausgelöst werden sollte und nur die Existenz des Cookies überprüft und keine der APIs von WP abrufen muss, würde ich es in ein benutzerdefiniertes MU-Plugin mit dem Namen 0000a.php einfügen, um sicherzustellen, dass es ausgelöst wird bevor irgendwelche Nicht-Core-Dateien versehentlich Header senden konnten.

3
John P Bloch

Ich denke, functions.php wird definitiv vor jeder Ausgabe verarbeitet und ist der geeignete Ort für Erweiterungen.

Der Haken, vielleicht after_setup_theme, kommt gleich danach.

2
Rarst

Sie können eine Funktion zum Überprüfen oder Setzen eines Cookies erstellen, müssen jedoch nach wp-config.php suchen, da bei Verwendung einer Umleitung die Datei direkt vor index.php in der Umleitung aufgerufen wird.

Dies stammt von einem Plugin, das Mark Jaquith geschrieben hat Altersüberprüfung , bei dem der Benutzer ein Formular zur Altersüberprüfung ausfüllen muss, bevor er die Website betritt. Ich änderte es für einen Schnaps, Bier, wite Aufstellungsort ich tat.

if ( !defined( 'ABSPATH' ) ) { // we're being called directly, to check the cookie
     if ( file_exists('../../wp-config.php') )
                  include('../../wp-config.php');
     elseif ( file_exists('../../../wp-config.php') )
               include('../../../wp-config.php');
    else
       die('Could not find wp-config.php');

Ein besserer Weg könnte jetzt existieren. Das Plugin wurde vor über einem Jahr geschrieben.

0
Chris_O