2012-04-02 21 views
0

Ich habe ein wenig Probleme beim Setzen eines Cookies in meiner WordPress-Installation.Setzen von Cookie in WordPress auf localhost

Hier ist mein Code:

function write_cookies() { 
    setcookie("category", get_query_var('cat'), time() + 3600 * 24, COOKIEPATH, '', false); 
    print($_COOKIE["category"]); 
} 
add_action('init', 'write_cookies'); 

Theoretisch sollte dieser Ausgang der categoryId, aber nichts scheint zu funktionieren.

Ich lese das auf localhost, eine leere Zeichenfolge als die Cookie-Domäne funktioniert, aber ich kann keine Art von Ausgabe erhalten. Ich habe auch 'localhost', '.localhost', '127.0.0.1', false und NULL als die Domäne versucht. Die COOKIEPATH Konstante gibt derzeit '/' aus

Ich lese die Cookies über Chrome, und es scheint keine Änderung in den Cookies auf der Seite zu sein.

UPDATE:

Danke für die Antworten so weit, ich werde erklären, warum ich Cookies in diesem Fall brauchen ...

Grundsätzlich auf meine Post-Seiten, ich andere Beiträge zeigen wollen in der gleichen Kategorie. Für diejenigen mit mehreren Kategorien bedeutet das, zu speichern, welche Route der Benutzer genommen hat, um den Post zu erreichen. Ich gebe ein reales Beispiel:

Ein Benutzer wird von Home zu Industry News navigieren, um mit dem Titel New Funding for Manufacturing Sector stärkt die lokalen Politiker. Nun möchte ich in den anderen Beiträgen für diesen Abschnitt Branchennews-Posts zeigen, aber wie wird der betreffende Post unter Industry News und Political News eingerichtet, wie kann ich feststellen, welche Route genommen wurde?

In erster Instanz ist dies eingerichtet, um wp_get_referer() zu analysieren, um festzustellen, welche Kategorie vor dem Post kam. Wenn ich dann diesen Abschnitt Andere Beiträge verwende, um zu einem Beitrag mit dem Titel Neue regionale Entwicklungen im Fertigungssektor zu wechseln, der sowohl als Branchennews als auch als regionale News klassifiziert ist, gibt der wp_get_referer den vorherigen Post und nicht die in meiner Logik erforderliche Kategorie zurück .

Meine Lösung bestand darin, (beim Besuch einer Kategorieseite) die ID der Kategorie zu speichern und diese in jeder zukünftigen Logik zu verwenden, um die korrekte Kategorie im Abschnitt Andere Beiträge zu ermitteln.

Verwirrend, ich weiß, aber ich bin in Design und Kundenanforderungen begrenzt, um diesen bestimmten Fluss zu liefern.

Wie vorgeschlagen, ich habe meinen Code Anzeige aktualisiert:

function write_cookies() { 
    setcookie("category", get_query_var('cat'), false, '/', str_replace('http://www','',get_bloginfo('url'))); 
    print('test: '.$_COOKIE["category"]); 
} 
add_action('init', 'write_cookies'); 

Diese gibt test: ohne das Cookie gedruckt wird.

Antwort

1

Ich würde wordpress herausfinden, die richtige Domain für mich mit etwas wie: str_replace('http://www','',get_bloginfo('url')). Das heißt, wenn Wordpress-Standardkategorien nicht ausreichen würden.

Im Allgemeinen ist die Verwendung von standardmäßigen Kategorien und Tag-Strukturen von Wordpress rohen Cookies weit vorzuziehen. Also warum war es wieder du brauchst einen Keks?

+0

In meinem Update finden Sie eine Erklärung zu "Warum". Es ist verwirrend. –

1

Es ist eine bekannte Einschränkung von Chrome

http://code.google.com/p/chromium/issues/detail?id=56211

Sie können nicht gesetzt/Zugang http://localhost Cookies. Sonderausgabe in Chrome.

+0

Das wusste ich nicht. Aber noch einmal, werden nicht die eingebauten Kategorien den Job machen? –

+1

+1 für das Aufzeigen des Fehlers. Obwohl die 'print ($ _ COOKIE [" Kategorie "]);' in anderen Browsern auch nichts tut. –

0

Ich testete eine Vielzahl von Cookie-Domains auf einer nicht-WordPress-Installation und ich fand, dass in einer Localhost-Umgebung die einzige Domäne, die erfolgreich bei der Einstellung der Variable war '' d. H. Eine leere Zeichenfolge.

Hier mein Code ist jetzt:

function write_cookies() {  
    setcookie("category", get_query_var('cat'), false, '/', '',false); 
} 

ich es auch eingestellt haben, so dass es aus der Post-Schleife und nicht aus dem ‚init‘ Ereignis genannt wird, gibt dies mir Zugang zu einem beträchtlichen Grad mehr Variablen in den Cookie setzen als beim init-Ereignis.

Verwandte Themen