¿Agregar un envoltorio a la inserción de YouTube automáticamente?

2

Con las nuevas versiones de WordPress, YouTube auto oEmbeds. En este sitio en particular en el que estoy trabajando, necesito un envoltorio único div alrededor del iframe incorporado. Eché un vistazo a mi functions.php pero no pude ver nada relacionado con YouTube. ¿Dónde encontraría el código que necesito para agregar mi html adicional?

    
pregunta MVS 25.09.2014 - 19:07

2 respuestas

4

Cree un complemento personalizado para su sitio, ingrese este código.

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: El filtro se ejecuta cuando los datos se recopilan del proveedor en cuestión. Por lo tanto, si ya incrustó la publicación y los datos incrustados se almacenan en caché, esto no la modificará.

    
respondido por el Otto 25.09.2014 - 19:31
3

Personalmente, encontré que el filtro oembed_dataparse es bastante fácil de usar; a veces funcionaba, a veces no funcionaba; y cuando se usa junto con instancias de TinyMCE personalizadas, parece que la envoltura agregada se incluyó en el contenido en lugar de agregarse mediante el filtro en la salida.

Encontré el filtro embed_oembed_html mucho más confiable y funciona cada vez:

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

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

Tenga en cuenta que esto incluirá all oEmbeds. Si desea orientarse específicamente a YouTube:

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

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

    return $html;
}
    
respondido por el indextwo 21.07.2015 - 14:22

Lea otras preguntas en las etiquetas