cookie law video wordpress code

In questi giorni di fermento sulla rete italiana a riguardo dell’entrata in vigore della normativa sulla privacy legata ai cookie ho dovuto cercare una veloce soluzione di ripiego per risolvere almeno provvisoriamente la problematica del caricamento dei cookie di profilazione di terze parti quando si usano video esterni (la soluzione che vi propongo qui è valida per youtube e vimeo ma può essere facilmente modificata per altre soluzioni).

Per più dettagli sulle problematiche legate alla cookie law vi rimando al esaustivo articolo di Alfonso Striano: http://www.alfonsostriano.it/cosa-fare-per-adeguarsi-al-cookie-law-in-italia/

Ed il PDF del kit d’uso dell’Adozione Cookie Policy: qui

Questa soluzione per risolvere alcune problematiche con la cookie law necessita con i seguenti requisiti:

  1. CMS wordpress (testato su la versione 4.2.2 ma dovrebbe funzionare anche su versioni precedenti)
  2. I video sul sito sono TUTTI inseriti attraverso short code, nel caso che vi presento uso jetpack per gestire i short code ma è facile modificare il codice perché funzioni con altre soluzioni
    il formato del short code che uso é senza “=”, cioè è [youtube https://youtu.br/ilvostrovideo] se usate la sintassi con l’ “=” o un altro separatore dovete rimuovere il primo carattere alla linea 17 con:

    $url = substr($atts[0], 1);

     

  3. Per la gestione dell’approvazione della policy della cookie law uso il plugin Cookie Law Info, anche in questo caso non è complesso modificare il codice perché funzioni con altre soluzioni

Dovete inserire il codice riportato qui sotto nella file function.php del vostro child theme.

Cosa fa il codice di Cookie Law WordPress Video?

Il codice verifica se il cookie di cookie law info esiste o è settato su ‘yes’ se la risposta é negativa allora rimpiazza lo shorcode dei video (youtube e vimeo nel mio caso) con un codice customizzato che avvisa l’utilizzatore che non può vedere il video direttamente sul sito perché non ha accettato la policy sui cookies. In questo modo i video non vengono  MAI caricatati fino a che l’utilizzatore non ha accettato le condizioni e la presenza di cookies di terze parti.

Nel caso le condizioni sopra non siano rispettate il codice semplicemente ripristina gli shortcodes originali (nel mio caso quelli generati da jetpack)

Potete vederlo in funzione su questo stesso sito sul questa pagina e testarlo cancellando i vostri cookie e poi accettando la policy sui cookie e ritualizzando la pagina

Non garantisco la legalità di questa soluzione, inoltre è una soluzione provvisoria e non propriamente “elgante”, un implementazione con AJAX et DOM sarebbe indubbiamente migliore, ma può essere di ispirazione per essere implementata in altri modi.

Il codice è sotto licenza GPL v3.0 http://www.gnu.org/licenses/gpl-3.0.en.html

 

<?php

// Code by Memory Slash Vision Studios - 2015 - Licence GPL v3.0 http://www.gnu.org/licenses/gpl-3.0.en.html

Function wp_schools_enqueue_scripts() {
wp_register_style( 'childstyle', get_stylesheet_directory_uri() . '/style.css'  );
wp_enqueue_style( 'childstyle' );
}
add_action( 'wp_enqueue_scripts', 'wp_schools_enqueue_scripts', 11);



function msv_shortcode_replacement( $atts, $content = null ) {
    extract(shortcode_atts(array(
    ), $atts));
	// retrive url
	$url = $atts[0];
	$out = '<div class="cookie_law_remove"><span>'.'Non potete visualizzare questo video in quanto non avete accettato l&#39;uso di cookie di terze parti nella policy cookie. Per un confort d&#39;uso vi consigliamo di autorizzare l&#39;uso dei cookies nel caso non lo desideriate potete comunque visualizzare il video direttamente sul sito dove è ospitato:<a href="'.$url.'" target="_blank"> qui</a>'.'</span></div>';
	return $out;
}

function msv_cookielaw_check() {
	if (!is_admin()){	
		// $cookievalue= isset( $_COOKIE['my-name'] ) ? $_COOKIE['my-name'] : 'not set'; // not save!! i prefer double check
		// if cookie exist store the value or the value is not yes
		if ( isset($_COOKIE["viewed_cookie_policy"])) { $cookievalue=$_COOKIE["viewed_cookie_policy"];}
		// if dont exist
		if ( !isset($_COOKIE["viewed_cookie_policy"]) || $cookievalue!='yes') {
			// debug
			//echo "<script type='text/javascript'>alert('cookienotset')</script>";
			// store original short code function TODO if is possible
			// YOUTUBE
			remove_shortcode('youtube');
			add_shortcode( 'youtube', 'msv_shortcode_replacement' );
			// VIMEO
			remove_shortcode('vimeo');
			add_shortcode( 'vimeo', 'msv_shortcode_replacement' );
			// add other short code here
		}
		else{
			// YOUTUBE
			remove_shortcode('youtube');
			// reset to jetpack original shortcode
			add_shortcode( 'youtube', 'youtube_shortcode');
			// VIMEO
			remove_shortcode('vimeo');
			// reset to jetpack original shortcode
			add_shortcode( 'vimeo', 'vimeo_shortcode');
			// add other short code here
		}
	}	
}

add_action('init', 'msv_cookielaw_check');