WordPressの新しいバージョンでは、YouTubeが自動的にオーバーエンディングします。私が取り組んでいるこの特定のサイトでは、埋め込みdiv
を囲むユニークなiframe
ラッパーが必要です。私は自分のfunctions.php
を調べましたが、YouTubeに関連するものは何も見えませんでした。 HTMLを追加するために必要なコードはどこにありますか。
あなたのサイト用に カスタムプラグイン を作成し、その中にこのコードを入れてください。
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;
}
}
注:フィルタは、データが埋め込みプロバイダから収集されたときに実行されます。ですから、既に投稿を埋め込んでいて、埋め込んだデータがキャッシュされているのであれば、それは変更されません。
個人的には、私はoembed_dataparse
フィルタを使うのがかなり面倒だと思いました。時にはうまくいったし、時にはうまくいかなかった。カスタムTinyMCEインスタンスと組み合わせて使用すると、追加のラッパーが出力時にフィルターを介して追加されるのではなく、コンテンツにハードベイクされたように見えます。
私はembed_oembed_html
フィルタがはるかに信頼性が高く、毎回動作することを発見しました。
function vnmFunctionality_embedWrapper($html, $url, $attr, $post_id) {
return '<div class="embedwrapper">' . $html . '</div>';
}
add_filter('embed_oembed_html', 'vnmFunctionality_embedWrapper', 10, 4);
これが all oEmbedsをラップすることに注意してください。特にYouTubeをターゲットにしたい場合は、
function vnmFunctionality_embedWrapper($html, $url, $attr, $post_id) {
if (strpos($html, 'youtube') !== false) {
return '<div class="youtubewrapper">' . $html . '</div>';
}
return $html;
}