内容
WordPressで外部コンテンツ埋め込みに使われるoEmbedはパラメーターを自由に設定できません。
ここではYouTube動画をiOSでインライン再生されるようにするplaysinline
パラメーターを追加してみます。
array_merge()
の第二引数を調整することで関連動画の設定なども簡単にできます。
コード
functions.php
function embed_oembed_html_custom($cache, $url) {
if (strpos($url, 'youtube.com') !== false || strpos($url, 'youtu.be') !== false) {
return preg_replace_callback(
'/<iframe.*?src\s*=\s*["|\'](.*?)["|\'].*?>/i',
function($matches) {
$url_query = parse_url($matches[1], PHP_URL_QUERY);
if (empty($url_query)) {
$query = array();
} else {
parse_str($url_query, $query);
}
$new_query = array_merge($query, array('playsinline' => '1'));
$new_src = add_query_arg($new_query, $matches[1]);
return str_replace($matches[1], $new_src, $matches[0]);
},
$cache
);
}
return $cache;
}
add_filter('embed_oembed_html', 'embed_oembed_html_custom', 10, 2);