Lassen Sie einen Begrüßungsbildschirm nur beim ersten Besuch in WordPress erscheinen

Lesezeit: 3 Minuten

Benutzer-Avatar
wabisabit

Ich versuche, einen Begrüßungsbildschirm nur dann erscheinen zu lassen, wenn jemand zum ersten Mal eine WordPress-Site besucht. Ich weiß nicht viel über PHP, aber das Setzen und Lesen eines Cookies schien eine einfache Möglichkeit zu sein, also habe ich dies zu der hinzugefügt header.php:

<?php if ( !isset($_COOKIE['accessed']) ) { 
    setcookie('accessed', 'yes', time() + (86400 * 30)); // 30 days
?>
    <script>
        // Some code
    </script>
<?php 
    } 
?>

Das Skript wird ausgeführt, aber das Cookie wird nie gesetzt, sodass es bei jedem Besuch ausgeführt wird …

Ich habe irgendwo gelesen, dass Sie mit PHP kein Cookie auf derselben Seite setzen und lesen können, aber wenn das stimmt, weiß ich wirklich nicht, wie ich das implementieren soll.

Jeder Hinweis wäre wirklich dankbar!

  • Benutzer mögen keine Splash-Screens

    Benutzer557846

    11. September 2013 um 21:03 Uhr

  • Ich auch nicht, aber der Kunde besteht darauf, einen zu haben. Also möchte ich es zumindest weniger nervig machen, indem ich es nie mehr als einmal zeige.

    – wabisabit

    11. September 2013 um 21:11 Uhr

  • Ich würde argumentieren, dass es Ihre Aufgabe ist, den Kunden zu erziehen.

    Benutzer557846

    11. September 2013 um 21:11 Uhr

Sie müssen das Cookie senden, BEVOR die Header gesendet werden.

Wenn Sie diesen Code in WordPress einfach in Ihr Design-HTML einfügen, funktioniert es nicht.

Sie müssen so etwas in Ihrer Datei functions.php tun

function checkAccessed(){
        if ( !isset($_COOKIE['accessed']) ) { 
            setcookie('accessed', 'yes', time() + 3600*24*30); 
            define("ACCESSED", false);
        }else{
            define("ACCESSED", true);
        }
}
add_action("init", "checkAccessed");

und dann in deinem Theme html..

<?php if(!ACCESSED){ ?>
  <script></script>
<?php } ?>

Benutzer-Avatar
Zach C

Es ist möglich, dass es sich bei dem Cookie um ein Pfad-Cookie handelt. Im Grunde wird dieses Cookie also nur an eine einzelne Seite gesendet.

Hast du Feuerwanze? Wenn Sie dies tun, versuchen Sie es auf der Registerkarte „Cookies“, um dies zu überprüfen. Dann können Sie auf der Registerkarte „Netzwerk“ überprüfen, ob das Cookie tatsächlich vom Browser Ihres Benutzers gesendet wurde.

Versuchen Sie dies, haben Sie die Berechnung für die Zeit geändert – nicht sicher, ob es einen Unterschied macht, aber so berechne ich 30 Tage:

<?php if ( !isset($_COOKIE['accessed']) ) { 
setcookie('accessed', 'yes', time() + 3600*24*30); // 30 days
?>
    <script>
    // Some code
    </script>
<?php 
    } 
?>

  • Versuchen Sie, die !isset-Zeilen vorübergehend mit einem //-Kommentar zu entfernen. Nur zum testen.

    – Zach C

    11. September 2013 um 21:19 Uhr

  • Ich glaube auch, dass die 30 Tage hinter Ihrer Setcookie-Funktion ein Problem verursachen können, das habe ich gerade bemerkt.

    – Zach C

    11. September 2013 um 21:21 Uhr

  • Ich habe versucht zu kommentieren und keine Änderung. Das 30 Tage Teil ist tatsächlich in meinem Code kommentiert, ich habe es beim Kopieren hier vermasselt.

    – wabisabit

    11. September 2013 um 21:26 Uhr

  • Versucht, die Zeitberechnung zu bearbeiten, siehe Code oben. Ich bin mir nicht sicher, ob das ein Problem sein könnte, aber so verwende ich es in meinem Code.

    – Zach C

    11. September 2013 um 21:30 Uhr

  • Nein … Ich habe das nur isoliert ausprobiert und es funktioniert, also muss es etwas mit der Funktionsweise von WordPress zu tun haben. Danke trotzdem für die Hilfe!

    – wabisabit

    11. September 2013 um 21:36 Uhr


1017740cookie-checkLassen Sie einen Begrüßungsbildschirm nur beim ersten Besuch in WordPress erscheinen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy