Title: Shortcode (opt_out) &#8211; Javascript version broken
Last modified: October 10, 2022

---

# Shortcode (opt_out) – Javascript version broken

 *  Resolved [Torsten Landsiedel](https://wordpress.org/support/users/zodiac1978/)
 * (@zodiac1978)
 * [3 years, 8 months ago](https://wordpress.org/support/topic/shortcode-opt_out-javascript-version-broken/)
 * Hi [@kittmedia](https://wordpress.org/support/users/kittmedia/),
 * es sieht so aus, als ob die Freischalten-Funktion und die Javascript-Version 
   sich nicht so gut vertragen:
 * Wenn ich “JavaScript-Erkennung für aktive Anbieter” aktiviert habe, dann wird
   der Klick auf die Checkbox gleich genutzt, um den Inhalt zu laden. Das ist schon
   irritierend, da ich mir nicht sicher bin, ob ich jetzt die Checkbox getroffen
   habe oder nicht. Nur der Blick in die Konsole zeigte dann, dass der Cookie wirklich
   gesetzt wird, wenn ich getroffen habe.
 * Nun müsste nach meinem Verständnis in der Datenschutzerklärung beim Shortcode`[
   embed_privacy_opt_out show_all="1"]` auch bei Speaker Deck ein Häkchen erscheinen.
   Tut es aber nicht.
 * Habe zum Test auch nochmal Twitter hinzugefügt. Auch hier das gleiche Spiel. 
   Cookie-Inhalt wird angepasst und zeigt jetzt Speaker Deck und Twitter, aber keine
   Checkbox ausgefüllt beim Shortcode.
 * Hast Du eine Idee, warum das nicht klappt?
 * Beste Grüße
    Torsten
 * The page I need help with: _[[log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fwordpress.org%2Fsupport%2Ftopic%2Fshortcode-opt_out-javascript-version-broken%2F%3Foutput_format%3Dmd&locale=en_US)
   to see the link]_

Viewing 5 replies - 1 through 5 (of 5 total)

 *  Plugin Author [Matthias Kittsteiner](https://wordpress.org/support/users/kittmedia/)
 * (@kittmedia)
 * [3 years, 8 months ago](https://wordpress.org/support/topic/shortcode-opt_out-javascript-version-broken/#post-16083878)
 * Hallo Torsten,
 * ich verstehe das Problem, kann es aber leider lokal nicht aktualisieren. Dem 
   Quellcode nach wird der Cookie nicht korrekt ausgelesen. Dieser wird über `wp_localize_script`
   an das JavaScript übergeben, ist bei dir aber nur ein leeres Array statt der 
   Embeds aus dem Cookie.
 * Die Funktion dafür findest du hier:
    [https://github.com/epiphyt/embed-privacy/blob/main/inc/class-embed-privacy.php#L313-L325](https://github.com/epiphyt/embed-privacy/blob/main/inc/class-embed-privacy.php#L313-L325)
 * An sich nichts großes, daher kann ich ohne genaues Debugging nicht erkennen, 
   warum das bei dir nicht funktioniert. Vielleicht kannst du bei dir mal schauen,
   was `$_COOKIE['embed-privacy']` bei dir zurückgibt und ebenso jeweils die Zwischenschritte
   von `wp_unslash( $_COOKIE['embed-privacy'] )`, `sanitize_text_field( wp_unslash(
   $_COOKIE['embed-privacy'] ) )` und `json_decode( sanitize_text_field( wp_unslash(
   $_COOKIE['embed-privacy'] ) ) )`.
 * Viele Grüße
    Matze
 *  Thread Starter [Torsten Landsiedel](https://wordpress.org/support/users/zodiac1978/)
 * (@zodiac1978)
 * [3 years, 8 months ago](https://wordpress.org/support/topic/shortcode-opt_out-javascript-version-broken/#post-16086342)
 * Hallo Matze,
 * habe den Fehler gefunden. Hier ist die Funktion im Original:
 *     ```
       	/**
       	 * Get the Embed Privacy cookie.
       	 * 
       	 * @return	mixed The content of the cookie
       	 */
       	private function get_cookie() {
       		if ( empty( $_COOKIE['embed-privacy'] ) ) {
       			return '';
       		}
   
       		if ( ! empty( $this->cookie ) ) {
       			return $this->cookie;
       		}
   
       		$this->cookie = json_decode( sanitize_text_field( wp_unslash( $_COOKIE['embed-privacy'] ) ) );
   
       		return $this->cookie;
       	}
       ```
   
 * Wenn kein Cookie gefunden wird, steigen wir aus, klar. Aber dann kommt ein Check,
   ob this->cookie nicht leer ist und wenn ja, gib das zurück. Die private Variable
   ist aber noch leer und gibt dann eben leer (NULL) zurück.
 * Die Lösung ist, die Variable zu füllen und dann zu checken, ob etwas drin gefunden
   wird. Dann wird die Liste auch korrekt angezeigt:
 *     ```
       	/**
       	 * Get the Embed Privacy cookie.
       	 * 
       	 * @return	mixed The content of the cookie
       	 */
       	private function get_cookie() {
       		if ( empty( $_COOKIE['embed-privacy'] ) ) {
       			return '';
       		}
   
       		$this->cookie = json_decode( sanitize_text_field( wp_unslash( $_COOKIE['embed-privacy'] ) ) );
   
       		if ( ! empty( $this->cookie ) ) {
       			return $this->cookie;
       		}
   
       		return $this->cookie;
       	}
       ```
   
 * Anscheinend ist das Problem nach dem ersten Benutzen nicht mehr leicht erkennbar,
   weil die Variable dann ja gefüllt ist und zumindest nicht mehr leer zurückgibt.
 * Beste Grüße
    Torsten
 *  Plugin Author [Matthias Kittsteiner](https://wordpress.org/support/users/kittmedia/)
 * (@kittmedia)
 * [3 years, 8 months ago](https://wordpress.org/support/topic/shortcode-opt_out-javascript-version-broken/#post-16086358)
 * Das ergibt aber nicht wirklich Sinn, dass eine leere Variable zurückgegeben wird,
   wenn die Prüfung auf nicht leer steht. Also dürfte die If-Anweisung nicht wahr
   sein.
 * Kannst du bei dir innerhalb der If-Anweisung schauen, was genau `$this->cookie`
   beinhaltet? Das dürfte dann ja nicht leer sein.
 *  Thread Starter [Torsten Landsiedel](https://wordpress.org/support/users/zodiac1978/)
 * (@zodiac1978)
 * [3 years, 8 months ago](https://wordpress.org/support/topic/shortcode-opt_out-javascript-version-broken/#post-16086566)
 * Ich verstehe es nicht und werde bald wahnsinnig …
 * Ich bekomme trotz anderer DevTools-Anzeige fogendes hin:
 * ![](https://i0.wp.com/www.wpmeetup-hamburg.de/wp-content/uploads/2022/10/bildschirmfoto-
   2022-10-10-um-22.19.20.png?ssl=1)
 * Der Cookie ist vorhanden, aber leer (siehe DevTools im Hintergrund) und der var_dump
   zeigt den Inhalt als `speakerdeck: true`.
 * Anders herum geht es auch. Laut DevTools ist der Cookie mit `speakerdeck: true`
   gesetzt, aber der var_dump zeigt nur NULL an.
 * Erst das Löschen des Cache löst das Problem, aber das kann ja nicht die Lösung
   sein. Die JS-Option soll ja gerade mit Caching funktionieren.
 * Um das Problem zu reproduzieren könntest du mal Cachify aktivieren. Vielleicht
   kannst es dann auch sehen und besser debuggen.
 * Beste Grüße und schon mal vielen Dank fürs Mitdenken und helfen!
    Torsten
 *  Plugin Author [Matthias Kittsteiner](https://wordpress.org/support/users/kittmedia/)
 * (@kittmedia)
 * [3 years, 8 months ago](https://wordpress.org/support/topic/shortcode-opt_out-javascript-version-broken/#post-16087403)
 * Ich denke, ich habe das Problem gefunden:
    `wp_localize_script` wird durch Cachify
   auch gecachet, wodurch die Daten dort falsch sind, auf die sich das JavaScript
   verlässt.
 * Ich habe mir dafür einen Issue erstellt:
    [https://github.com/epiphyt/embed-privacy/issues/123](https://github.com/epiphyt/embed-privacy/issues/123)

Viewing 5 replies - 1 through 5 (of 5 total)

The topic ‘Shortcode (opt_out) – Javascript version broken’ is closed to new replies.

 * ![](https://ps.w.org/embed-privacy/assets/icon.svg?rev=2812349)
 * [Embed Privacy](https://wordpress.org/plugins/embed-privacy/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/embed-privacy/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/embed-privacy/)
 * [Active Topics](https://wordpress.org/support/plugin/embed-privacy/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/embed-privacy/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/embed-privacy/reviews/)

 * 5 replies
 * 2 participants
 * Last reply from: [Matthias Kittsteiner](https://wordpress.org/support/users/kittmedia/)
 * Last activity: [3 years, 8 months ago](https://wordpress.org/support/topic/shortcode-opt_out-javascript-version-broken/#post-16087403)
 * Status: resolved