Änderung in der Permalink-Struktur gemacht Javascript Cookie funktioniert nicht richtig

Meine Website benötigt einen Mechanismus, bei dem ein Benutzer beim ersten Besuch der Site zur Vereinbarungsseite weitergeleitet wird. Sobald er die Vereinbarung akzeptiert, wird sie in einem Cookie gespeichert. Er kann direkt danach eine beliebige Seite durchsuchen.

Ich verwende JavaScript für Cookies und es funktionierte gut, solange die Permalink-Einstellung standardmäßig war ( http://mydomain.com/?p=123 ).

Sobald ich den Permalink geändert habe und ihn postname ( http://mydomain.com/sample-post/ ) gemacht habe, hat es angefangen, ein Problem zu zeigen.

(Die Änderung in der .htaccess-Datei wurde wie von WordPress empfohlen durchgeführt)

Das Problem ist: Der Nutzer wird immer wieder auf die Vereinbarungsseite umgeleitet, auch wenn er auf den Zustimmungsknopf klickt.

Folgendes ist der Code.

In der header.php

  setCookie("requested_url", document.URL, 4); var agreement = getCookie("agreement"); if(agreement == "yes"){ var requested_url = getCookie("requested_url"); } else{ window.location.assign("http://mydomain.com/?page_id=22"); } 

In der header.php wird überprüft, ob der Cookie namens convention auf yes gesetzt ist. Wenn ja, dann tu nichts. Wenn nicht auf Ja eingestellt, wird auf die Vereinbarungsseite umgeleitet (/? Page_id = 22). Die Vereinbarung (Cookie) ist auf dieser Seite festgelegt .

In page_id=22(page-22.php)

   function yesbutton() { setCookie("agreement", "yes", 5); window.location.assign(getCookie("requested_url")); }  

Nachdem ich den Code header.php , habe ich festgestellt, dass in der header.php nicht richtig auf den Wert der Vereinbarung zugegriffen wird.

In page-22.php setCookie("agreement", "yes", 5); funktioniert gut. Ich kann einen Alarm auslösen und hier seinen Wert (ja) erhalten.

Aber wenn ich in header.php den gleichen Cookie aufmerksam header.php , wird Leerraum header.php . In der header.php gibt dieser Code ein leeres Popup zurück.

  var agreement = getCookie("agreement"); alert(agreement); 

Dies bedeutet eindeutig, dass der Cookie (Vereinbarung), der in page-22.php auf yes page-22.php wird, nicht korrekt in header.php wird. Aber warum das passiert, konnte ich keine Ahnung bekommen. Seltsam ist, wenn der Permalink standardmäßig ist, funktioniert alles gut. Sobald permalink auf postname gesetzt ist , wird der Cookie (Vereinbarung) in header.php leer.

Update: setCookie und getCookie functionen, die in header.php und page-22.php existiert.

  function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+d.toGMTString(); document.cookie = cname + "=" + cvalue + "; " + expires; } function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1); if (c.indexOf(name) != -1) return c.substring(name.length, c.length); } return ""; } 

Diese beiden functionen funktionieren auf beiden Seiten einwandfrei.

Das Problem ist:

  setCookie("agreement", "yes", 5); that is done in page-22.php sets cookie correctly. 

Aber wenn auf den gleichen Cookie in header.php mit zugegriffen wird

  var agreement = getCookie("agreement"); the value of agreement is blank. alert(agreement) returns blank space. 

Hinweise / Hinweise sind willkommen.

Solutions Collecting From Web of "Änderung in der Permalink-Struktur gemacht Javascript Cookie funktioniert nicht richtig"

Von Kommentar:

Es gibt nicht genügend Informationen, um Ihre Frage zu beantworten. Ihr ganzer Code ist Javascript, nicht PHP. Darüber hinaus gibt es keine function namens “setCookie” oder “getCookie” in JavaScript, und Sie geben nicht an, welche Bibliotheken Sie verwenden.

Die Antwort ist höchstwahrscheinlich, dass Ihre setCookie-function den aktuellen Seitenpfad verwendet (Cookies haben eine URL-Pfadkomponente), und daher können andere Seiten auf anderen URLs nicht auf diese Cookies zugreifen, aber es gibt keine echte Möglichkeit zu sagen, ohne diesen Code zu sehen Gut.

Für JS-Probleme in dieser Richtung solltest du einen anderen Stack ausprobieren, dies ist keine WordPress-spezifische Frage, sondern ein allgemeines Javascript-Problem.