Adicionando um wrapper ao youtube incorporado automaticamente?

2

Com versões mais recentes do WordPress, oEmbeds auto do YouTube. Neste site específico em que estou trabalhando, preciso de um wrapper div exclusivo em torno do iframe incorporado. Eu dei uma olhada no meu functions.php , mas não consegui ver nada relacionado ao YouTube. Onde eu encontraria o código necessário para adicionar meu html extra?

    
por MVS 25.09.2014 / 19:07

2 respostas

4

Crie um plug-in personalizado para o seu site, insira este código nele.

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;
    }
}
  

Nota: O filtro é executado quando os dados são coletados do provedor oembed. Então, se você já incorporou a postagem e os dados incorporados são armazenados em cache, isso não a modificará.

    
por Otto 25.09.2014 / 19:31
3

Pessoalmente, achei o filtro oembed_dataparse muito complicado de usar; às vezes funcionava, às vezes não funcionava; e quando usado em conjunto com instâncias personalizadas do TinyMCE, parece que o wrapper adicionado foi hard-baked no conteúdo em vez de ser adicionado através do filtro na saída.

Eu achei o filtro embed_oembed_html muito mais confiável e funciona sempre:

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

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

Observe que isso envolverá todos oEmbeds. Se você quisesse segmentar o YouTube especificamente:

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

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

    return $html;
}
    
por indextwo 21.07.2015 / 14:22