私は.embed-responsive
クラスに埋め込まれたビデオをラップしてCSSで反応するようにするカスタムコードを推進しました。
PHP:
function kadabra_responsive_embed( $html ) {
return '<div class="embed-responsive embed-responsive-16by9">' . $html . '</div>';
}
add_filter( 'embed_oembed_html', 'kadabra_responsive_embed', 10, 3 );
add_filter( 'video_embed_html', 'kadabra_responsive_embed' );
CSS:
.embed-responsive-16by9 {
height: 0;
padding-bottom: 56.25%;
}
これはビデオの埋め込みに最適です。ただし、Twitterの埋め込みのように、必須ではない他の埋め込みもラップされます。ビデオ埋め込み専用にする方法はありますか?
embed_oembed_html
フィルタ用の新しいコールバックを作成し、3番目の入力引数であるoembed $url
をターゲットにすることができます。
それならcreatebooleanヘルパー関数は(未テスト)です。
function is_oembed_from_video_specific_hosts_wpse274552( $url )
{
return in_array(
parse_url( $url, PHP_URL_Host ),
[
'youtube.com',
'youtu.be',
'vimeo.com', // ... etc
],
true
);
}
または(テストされていない)ようなより詳細な(より高価な)チェック:
function is_video_oembed_wpse274552( $url )
{
$video_providers = [
'#https?://((m|www)\.)?youtube\.com/watch.*#i',
'#https?://((m|www)\.)?youtube\.com/playlist.*#i',
'#https?://youtu\.be/.*#i',
'#https?://(.+\.)?vimeo\.com/.*#i',
'#https?://(www\.)?dailymotion\.com/.*#i',
'#https?://dai\.ly/.*#i',
'#https?://videopress\.com/v/.*#',
'#https?://wordpress\.tv/.*#i',
'#https?://(www\.)?funnyordie\.com/videos/.*#i',
'#https?://(www\.)?(animoto|video214)\.com/play/.*#i',
'#https?://www\.facebook\.com/.*/videos/.*#i',
'#https?://www\.facebook\.com/video\.php.*#i', // ... etc
];
$is_video_oembed = false;
foreach( $video_providers as $video_provider )
{
if ( preg_match( $video_provider , $url ) ) {
{
$is_video_oembed = true;
break;
}
}
return $is_video_oembed;
}
OEmbedプロバイダは、WordPressコア内およびフィルタを通じて変更、追加、削除できることに注意してください。それは上記のチェックに影響を与える可能性があります。
あなたのニーズに合わせて調整できることを願っています!