我用来操纵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缓存,所以我确信这不是发生这种情况的原因。