Avec les nouvelles versions de WordPress, YouTube oEmbeds auto. Sur ce site particulier sur lequel je travaille, j'ai besoin d'un wrapper div
unique autour de la iframe
incorporée. J'ai jeté un coup d'œil dans mon functions.php
mais je n'ai rien vu de lié à YouTube. Où pourrais-je trouver le code dont j'ai besoin pour ajouter mon code HTML supplémentaire?
Créez un plugin personnalisé pour votre site, mettez-y ce code.
add_filter('oembed_dataparse','oembed_youtube_add_wrapper',10,3);
function oembed_youtube_add_wrapper($return, $data, $url) {
if ($data->provider_name == 'YouTube') {
return "<div class='whatever'>{$return}</div>";
} else {
return $return;
}
}
Remarque: Le filtre s'exécute lorsque les données sont collectées à partir du fournisseur oembed. Ainsi, si vous avez déjà incorporé le message et que les données incorporées sont mises en cache, cela ne le modifiera pas.
Personnellement, j'ai trouvé le filtre oembed_dataparse
assez difficile à utiliser; parfois cela fonctionnait, parfois non; et lorsqu'il est utilisé conjointement avec des instances personnalisées de TinyMCE, il semble que l'encapsuleur ajouté ait été intégré au contenu plutôt que d'être ajouté via le filtre en sortie.
J'ai trouvé le filtre embed_oembed_html
beaucoup plus fiable et fonctionne à chaque fois:
function vnmFunctionality_embedWrapper($html, $url, $attr, $post_id) {
return '<div class="embedwrapper">' . $html . '</div>';
}
add_filter('embed_oembed_html', 'vnmFunctionality_embedWrapper', 10, 4);
Notez que cela va envelopper tout oEmbeds. Si vous souhaitez cibler spécifiquement YouTube:
function vnmFunctionality_embedWrapper($html, $url, $attr, $post_id) {
if (strpos($html, 'youtube') !== false) {
return '<div class="youtubewrapper">' . $html . '</div>';
}
return $html;
}