Le problème : le code des vidéos n’est pas valide en HTML5
Maintenant que nous avons mis à jour le code des oEmbed Youtube, nous allons rendre le code de l’iframe valide. Voici ce que le code oEmbed de WordPress donne par défaut avec un lien Youtube :
<iframe src="https://www.youtube.com/embed/Gvh2Zo7UL6E" width="660" height="371" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
Code language: HTML, XML (xml)
Résultat:
Or le petit problème, c’est que tout cela n’est pas vraiment valide au niveau W3C et je commence à me lasser de voir ces erreurs de validation sur toutes les pages du site avec des vidéos :
Erreur 1 : Attribute allowfullscreen not allowed on element iframe at this point.
Erreur 2 : The frameborder attribute on the iframe element is obsolete. Use CSS instead.
Code language: JavaScript (javascript)
La solution : filtrer le rendu oEmbed de WordPress pour purifier le code
Voici donc la solution que j’ai mise en place sur le site : je filtre le code oEmbed de WordPress de manière à retirer le tag allowfullscreen
qui n’a rien à faire là et à supprimer l’attribut frameborder
, que je remplace par un style="border: none"
.
Éditez le fichier functions.php
de votre thème et ajoutez-y cette fonction:
<?php
/*
|-----------------------------------------------------------------------
| Sky oEmbed Filter by Matt - www.skyminds.net
|-----------------------------------------------------------------------
|
| The sky_oembed_filter() function attempts to validate WordPress
| video oEmbeds for HTML5.
| $return is the normal HTML that the oEmbed process would return.
| $data is the data received from the oEmbed call, in an object format.
| $url is the original URL being queried for oEmbed info.
|
*/
add_filter('oembed_dataparse', 'sky_oembed_filter', 90, 3 );
function sky_oembed_filter( $return, $data, $url ) {
$return = str_replace('frameborder="0" allowfullscreen', 'style="border: none"', $return);
return $return;
}
Code language: HTML, XML (xml)
Notez que WordPress cache les résultats oEmbed dans la table postmeta
donc après avoir installé ce code et si vous voulez vérifier que cela fonctionne, éditez un article pour que le postmeta se mette à jour.
Voilà, vos pages avec vidéos YouTube devraient maintenant être valides.
Recherchez-vous un expert WordPress ou WooCommerce sur qui vous pouvez compter? Ne cherchez plus.