YouTubeの埋め込みを操作するための私のgo-toコードはもう機能しません。誰が私が間違っていることを私に説明できますか?
これはfunctions.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
を返すときに出力を操作します。埋め込みタイプがvideoの場合、出力を<figure>
タグでラップします。
Vimeoのビデオを埋め込むと、埋め込みコードが<figure>
タグにラップされます。 YouTubeの動画を埋め込むと、埋め込まれますが、私の操作は適用されません。私はこれが機能していたことを知っています、それはWordPressの最近のバージョンがもうoembed_dataparseの影響を受けないようにする原因となる何かを変えたようです。
テストの前に埋め込みキャッシュを消去したので、それが原因ではないと確信しています。
これで解決したと思います。
add_filter('oembed_dataparse', 'bolster_oembed_filter', 0, 2 );
add_filter ステートメントの優先順位を0に変更しましたが、これで再び機能します。