WordPress oEmbedded W3C验证

时间:2015-02-17 作者:Sam

我最近建立了一个主题,利用oEmbed WordPress中的功能。

如果可能,我喜欢通过W3C验证我的主题。该网站的内容是由Vimeo视频驱动的,因此我发现了30多个验证错误。

验证工具标记以下属性:

frameborder
webkitallowfullscreen
mozallowfullscreen
我知道allowfullscreen 属性对于HTML5播放器是必需的,但想知道是否有一个解决方案可以通过验证?

我看得出来webkitallowfullscreenmozallowfullscreen 不再需要:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

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

这个class-oembed.php 文件显示了一些有关oEmbed的可用过滤器。

我们可以使用oembed_resultoembed_dataparse 过滤以修改从Vimeo获取的HTML,然后再将其缓存到post meta中。以下是后者的一个示例:

add_filter( \'oembed_dataparse\', function( $return, $data, $url )
{
    // Target only Vimeo:
    if(
            is_object( $data ) 
        &&  property_exists( $data, \'provider_name\' )
        &&  \'Vimeo\' === $data->provider_name
    )
    {
        // Remove the unwanted attributes:
        $return = str_ireplace(
            array( 
                \'frameborder="0"\', 
                \'webkitallowfullscreen\', 
                \'mozallowfullscreen\' 
            ),
            \'\',
            $return
        );
    }
    return $return;
}, 10, 3 );
示例:

Before:

<iframe src="//player.vimeo.com/video/32001208" 
        width="584" 
        height="329" 
        frameborder="0" 
        title="Earth" 
        webkitallowfullscreen 
        mozallowfullscreen 
        allowfullscreen></iframe>

After:

<iframe src="//player.vimeo.com/video/32001208" 
        width="584" 
        height="329"  
        title="Earth"   
        allowfullscreen></iframe>

附加说明xhtml:

如果您查看Vimeo oEmbed API, 有一个xhtml 具有默认值的参数xhtml=false. 您可以尝试,例如:

https://vimeo.com/api/oembed.json?url=https%3A//vimeo.com/32001208
vs。

https://vimeo.com/api/oembed.json?url=https%3A//vimeo.com/32001208&xhtml=true
因此,不是:

webkitallowfullscreen mozallowfullscreen allowfullscreen
我们得到:

 webkitallowfullscreen="webkitallowfullscreen" 
 mozallowfullscreen="mozallowfullscreen" 
 allowfullscreen="allowfullscreen"
如果我们想要实现XHTML验证,我们可以尝试通过oembed_remote_get_args, 例如但我没有测试。

结束

相关推荐

add oembed provider

我想将oembed provider添加到我的buddypress活动内容中我找到了这个函数<?php wp_oembed_add_provider( $format, $provider, $regex ); ?> 我知道我需要添加init 滤器我已经联系了该网站的开发人员,他们给了我一个嵌入链接。所以网站是http://www.myvideo.ge/他们给了我这个链接:http://embed.myvideo.ge/flv_player/player.php?video_id=