您可以使用oembed_result
. 现在测试URL的HTTP主机www.youtube.com
并添加参数。
oEmbed结果缓存在post-meta字段中,以避免请求过多。为了更新旧帖子,我添加了一个激活助手,它可以清除那些仅用于Youtube嵌入的缓存内容。
<?php # -*- coding: utf-8 -*-
/* Plugin Name: Add \'wmode\' to video embeds */
register_activation_hook( __FILE__, \'t5_clear_oembed_cache\' );
add_filter( \'oembed_result\', \'t5_oembed_wmode\', 10, 2 );
/**
* Add "wmode=transparent" query string to youtube embeds.
*
* @wp-hook oembed_result
* @param string $html
* @param string $url
* @return string
*/
function t5_oembed_wmode( $html, $url )
{
if ( \'www.youtube.com\' !== parse_url( $url, PHP_URL_HOST ) )
return $html;
return str_replace( \'=oembed\', \'=oembed&wmode=transparent\', $html );
}
/**
* Clear oEmbed cache for all youtube embeds.
*
* @return void
*/
function t5_clear_oembed_cache()
{
global $wpdb;
$posts = $wpdb->get_results(
"SELECT post_id, meta_key
FROM `$wpdb->postmeta`
WHERE `meta_key` LIKE \'_oembed%\'
AND `meta_value` LIKE \'%youtube%\'"
);
if ( ! $posts )
return;
/*
return print \'<pre>$posts = \' . htmlspecialchars( print_r( $posts, TRUE ), ENT_QUOTES, \'utf-8\', FALSE ) . "</pre>\\n";
/*/
foreach ( $posts as $post )
delete_post_meta( $post->post_id, $post->meta_key );
/**/
}
请注意,此属性会生成视频
inaccessible for screen reader users, 所以他们听不进去。因此,更好的选择是使用Youtube的HTML5输出。