WordPress : valider le code oEmbed Youtube en HTML5

Le problème : le code des vidéos n’est pas valide en HTML5

Voici ce que le code oEmbed de WordPress donne par défaut avec un lien Youtube :

<p><iframe width="660" height="371" src="http://www.youtube.com/embed/YI7Oq8y-jXA?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>

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.

La solution : filtrer le rendu oEmbed de WordPress pour purifier le code

HTML5 logo WordPress : valider le code oEmbed Youtube en HTML5Voici 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" :

  1. éditez le fichier functions.php de votre thème
  2. 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. 
    |
    */
    function sky_oembed_filter( $return, $data, $url ) {
     	$return = str_replace('frameborder="0" allowfullscreen', 'style="border: none"', $return);
    	return $return;
    }
    add_filter('oembed_dataparse', 'sky_oembed_filter', 90, 3 );
    ?>
  3. enregistrez le fichier.

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 maitenant être valides.


quick-menu

Laisser un commentaire


Si vous possédez un compte, connectez-vous.

Me tenir informé(e) des futurs commentaires.