我有一个过滤器,用于将嵌入链接包装在响应包装器中。请参见代码。
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>\';
}
唯一的问题是,这也适用于oembed列表上的所有其他内容,即推特嵌入、instagram等。我试图添加一个if语句,但运气不好。基本上,只需将此包装器添加到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;
}
}
最合适的回答,由SO网友:Dave Romsey 整理而成
$url
将包含嵌入源的完整URL。E、 g.: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>\';
}