レスポンシブラッパーでembed_oembedリンクをラップするためのフィルタがあります。コードを見てください。
add_filter('embed_oembed_html', 'wrap_embed_with_div', 10, 3);
function wrap_embed_with_div($html, $url, $attr) {
return '<div class="responsive-container">'.$html.'</div>';
}
唯一の問題は、これが埋め込まれたリストの他のすべて、つまりTwitterの埋め込み、instagramなどにも当てはまることです。基本的には、このラッパーをyoutube/vimeoのようなビデオ埋め込みに追加するだけでいいでしょう。これが私がこれまでに得たものです。
add_filter('embed_oembed_html', 'wrap_embed_with_div', 10, 3);
function wrap_embed_with_div($html, $url, $attr) {
if ($url == 'https://youtube.com'){
return '<div class="responsive-container">'.$html.'</div>';
}
else {
return $html;
}
}
$url
は埋め込みソースへの完全なURLを含みます。例:https://www.youtube.com/watch?v=_UmOY6ek_Y4
なので、プロバイダの名前が表示されるかどうかを確認するには、$url
内を検索する必要があります。
add_filter( 'embed_oembed_html', 'wpse_embed_oembed_html', 99, 4 );
function wpse_embed_oembed_html( $cache, $url, $attr, $post_ID ) {
$classes = array();
// Add these classes to all embeds.
$classes_all = array(
'responsive-container',
);
// Check for different providers and add appropriate classes.
if ( false !== strpos( $url, 'vimeo.com' ) ) {
$classes[] = 'vimeo';
}
if ( false !== strpos( $url, 'youtube.com' ) ) {
$classes[] = 'youtube';
}
$classes = array_merge( $classes, $classes_all );
return '<div class="' . esc_attr( implode( $classes, ' ' ) ) . '">' . $cache . '</div>';
}