将wmode属性设置为透明,以便嵌入快捷代码使下拉菜单悬停在Internet Explorer中嵌入的YouTube上

时间:2013-02-27 作者:Christine Cooper

当您使用IE8或IE9将鼠标悬停在我的下拉菜单上时,菜单div将显示在YouTube嵌入的后面。它可以在所有其他浏览器上正常工作。

经过研究,我发现还有很多人the same problem 解决方案是设置wmode 把某事归因于某人transparent. 比如说<iframe width="578" height="325" src="http://www.youtube.com/embed/XXXX?wmode=transparent"></iframe><param name="wmode" value="transparent" />.

我的问题是,如何调整Wordpress[embed] 用于设置wmode 把某事归因于某人transparent?

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

您可以使用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&amp;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输出。

SO网友:user30934

这是一个糟糕的想法,因为带有wmode透明的Flash电影不再适用于带有屏幕阅读器的盲人用户。盲人确实喜欢听视频,在老栗子再次出现之前。使用HTML5视频嵌入,使其适用于所有人和IE8用户,获得youtube链接。不要让你的可访问性受到影响,因为旧IE在嵌入方面很糟糕。

结束

相关推荐

Wrap text around shortcode

我在插件中使用了一个短代码处理程序。短代码可以有不同的(可选)参数。例如,可以在静态WordPress页面上使用两个短代码,在短代码之前、之间和之后都有文本。例如: Lorem ipsum dolor sit amet, consetetur sadipscing elitr <table> <tr> <td>[shortcode option=\"1\"]</td>&#