Comment afficher une div par dessus les frames en l’absence d’acceptation des services Youtube, Dailymotion etc ? La conformité RGPD ne s’arrête pas uniquement aux services type Google Analytics !
Première étape : on pousse les services
(tarteaucitron.job = tarteaucitron.job || []).push('youtube'); (tarteaucitron.job = tarteaucitron.job || []).push('dailymotion');
Youtube Nocookie
Avant tout on passe toutes les embeds et les frames Youtube sur le domaine nocookie :
function cookieless_domain_youtube( $cached_html, $url = null ) { if ( strpos( $url, 'youtu' ) ) { $cached_html = preg_replace( '/youtube\.com\/(v|embed)\//s', 'youtube-nocookie.com/$1/', $cached_html ); } return $cached_html; } add_filter( 'embed_oembed_html', 'cookieless_domain_youtube', 10, 2 );
Rendre conforme ses iframes ou embed avec TarteAuCitron
Chaque service possède son propre marqueur.
C’est-à-dire :
- Marqueur TarteAuCitron Youtube
<div class="youtube_player" videoID="video_id" width="width" height="height"></div>
- Marqueur Dailymotion
<div class="dailymotion_player" videoID="video_id" width="width" height="height"></div>
L’objectif est donc de trouver un moyen d’isoler les données :
- id de la vidéo
- largeur
- hauteur
Et d’ajouter une div autour avec la class « nom_du_service_player ».
embed_oembed_html avec TarteAuCitron
On va analyser le code des pages et lorsque les URLS dailymotions.com ou Youtube.com sont détectés le hook va :
- isoler l’ID des vidéos
- recréer une div en fonction du service.
Grâce à cela les cookies ne seront pas déposés sans consentement ! Une fois que les cookies sont acceptés, c’est le script tarteaucitron qui fait tout le travail et qui recrée la frame avec les paramètres mis dans votre div
- id
- hauteur
- largeur
function wrap_video( $html, $url, $attr, $post_id ){ if(strpos($html, 'dailymotion.com') !== false){ $parts = explode("/",$url); //On récupère l'ID de la vidéo pour la div parts = domain + / + video + / = id array_shift($parts);array_shift($parts);array_shift($parts);array_shift($parts); $id_video = implode("/",$parts); //on vire le slash de fin return '<div class="dailymotion_player" videoID="'. $id_video .'">' . $html . '</div>'; }elseif(strpos($html, 'youtube.com') !== false || strpos($html, 'youtube-nocookie.com') !== false){ parse_str( parse_url( $url, PHP_URL_QUERY ), $id_video ); //On récupère l'ID de la vidéo pour la div return '<div class="youtube_player" videoID="'. $id_video['v'] .'">' . $html . '</div>'; } return $html; } add_filter('embed_oembed_html', 'wrap_video', 10, 4 );