操作oembed_datparse停止了对YouTube嵌入的工作

时间:2015-10-22 作者:Florian

我用来操纵YouTube嵌入的go-to代码已经不起作用了。有人能解释一下我做错了什么吗?

这是我在函数中的代码。php

// OEMBED FILTER
function bolster_oembed_filter( $return, $data ) {
    // YOUTUBE (ADD PARAMS, NOCOOKIE DOMAIN)
    if(
            is_object( $data ) 
        &&  property_exists( $data, \'provider_name\' )
        &&  \'YouTube\' === $data->provider_name
    ){
        $return = preg_replace("@src=([\'\\"])?([^\'\\">\\s]*)@", "src=$1$2?rel=0&showinfo=0&wmode=opaque", $return);
        $return = preg_replace(\'/youtube\\.com\\/(v|embed)\\//s\', \'youtube-nocookie.com/$1/\', $return);
    }
    // VIDEO (ADD WRAPPER)
    if(
            is_object( $data ) 
        &&  property_exists( $data, \'type\' )
        &&  \'video\' === $data->type
    ){
        $return = \'<figure class="media">\'.$return.\'</figure>\';
    }
    return $return;
}
add_filter(\'oembed_dataparse\', \'bolster_oembed_filter\', 10, 2 );
如您所见,我检查提供者是否是YouTube,并在返回时操纵输出true. 我还将输出包装在<figure> 嵌入类型为视频时标记。

当我嵌入Vimeo视频时,嵌入的代码被包装在<figure> 标签当我嵌入YouTube视频时,它会被嵌入,但没有应用任何操作。我知道这曾经奏效,WordPress的最新版本似乎改变了一些东西,使YouTube oembed不再受oembed\\u dataparse的影响。

在测试之前,我确实清理了oembed缓存,所以我确信这不是发生这种情况的原因。

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

我想我这样做就解决了:

add_filter(\'oembed_dataparse\', \'bolster_oembed_filter\', 0, 2 );
我更改了add_filter 语句设置为0,现在它再次工作。