it-swarm.com.de

Einen Wrapper zum YouTube-Embed automatisch hinzufügen?

Mit neueren Versionen von WordPress wird YouTube automatisch eingebunden. Auf dieser speziellen Site, an der ich arbeite, benötige ich einen eindeutigen Wrapper für div um die eingebettete iframe. Ich habe in meinem functions.php nachgesehen, aber nichts im Zusammenhang mit YouTube gefunden. Wo finde ich den Code, den ich zum Hinzufügen meines zusätzlichen HTML-Codes benötige?

2
MVS

Erstellen Sie ein benutzerdefiniertes Plugin für Ihre Site, und fügen Sie diesen Code ein.

add_filter('oembed_dataparse','oembed_youtube_add_wrapper',10,3);
function oembed_youtube_add_wrapper($return, $data, $url) {
    if ($data->provider_name == 'YouTube') {
        return "<div class='whatever'>{$return}</div>";
    } else {
        return $return;
    }
}

Hinweis: Der Filter wird ausgeführt, wenn die Daten vom OEMBed-Anbieter erfasst werden. Wenn Sie den Beitrag bereits eingebettet haben und die eingebetteten Daten zwischengespeichert sind, wird er dadurch nicht geändert.

4
Otto

Persönlich fand ich den oembed_dataparse Filter ziemlich umständlich zu bedienen; manchmal hat es funktioniert, manchmal nicht; und wenn es in Verbindung mit benutzerdefinierten TinyMCE-Instanzen verwendet wird, scheint es, als ob der hinzugefügte Wrapper fest in den Inhalt eingebunden wurde, anstatt über den Filter bei der Ausgabe hinzugefügt zu werden.

Ich fand den embed_oembed_html-Filter viel zuverlässiger und funktioniert jedes Mal:

function vnmFunctionality_embedWrapper($html, $url, $attr, $post_id) {
    return '<div class="embedwrapper">' . $html . '</div>';
}

add_filter('embed_oembed_html', 'vnmFunctionality_embedWrapper', 10, 4);

Beachten Sie, dass dies all oEmbeds einschließt. Wenn du YouTube gezielt ansprechen wolltest:

function vnmFunctionality_embedWrapper($html, $url, $attr, $post_id) {

    if (strpos($html, 'youtube') !== false) {
        return '<div class="youtubewrapper">' . $html . '</div>';
    }

    return $html;
}
3
indextwo