wake-up-neo.net

Die Bearbeitung von oembed_dataparse funktioniert nicht mehr für YouTube-Einbettungen

Mein Code zum Bearbeiten von YouTube-Einbettungen funktioniert nicht mehr. Kann mir jemand erklären, was ich falsch mache?

Das ist mein Code in 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 );

Wie Sie sehen, überprüfe ich, ob es sich bei dem Anbieter um YouTube handelt, und bearbeite die Ausgabe, wenn true zurückgegeben wird. Ich verpacke die Ausgabe auch in ein <figure>-Tag, wenn der Einbettungstyp "Video" ist.

Wenn ich ein Vimeo-Video einbinde, wird der Einbettungscode in das <figure> -Tag eingeschlossen. Wenn ich ein YouTube-Video einbinde, wird es eingebettet, aber keine meiner Manipulationen werden angewendet. Ich weiß, dass dies früher funktioniert hat. Es scheint, dass eine neuere Version von WordPress etwas geändert hat, das dazu führt, dass YouTube OEMBED nicht mehr von OEMBED_DATAPARSE betroffen ist.

Ich habe den oembed-Cache vor dem Testen gesäubert, daher bin ich sicher, dass dies nicht der Grund ist, warum dies passiert.

3
Florian

Ich denke, ich habe das gelöst:

add_filter('oembed_dataparse', 'bolster_oembed_filter', 0, 2 );

Ich habe die Priorität der add_filter -Anweisung auf 0 geändert, jetzt funktioniert es wieder.

2
Florian