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 :

  1. id de la vidéo
  2. largeur
  3. 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 );
0 0 votes
Article Rating
S’abonner
Notification pour
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires