Elimina el atributo frameborder de los iframes

2

El validador W3C genera un error porque Wordpress agrega frameborder="0" a iframes. Además, al Validador no le gusta el atributo de permiso.

Encontré una pregunta similar para los videos de Vimeo: WordPress oEmbed W3C Validation . Sin embargo, no pude hacerlo funcionar.

Ese es el código que agregué al archivo function.php que, sin embargo, no funciona:

add_filter( 'oembed_dataparse', function( $return, $data, $url )
{
    if( is_object( $data ) )
    {
        // Remove the unwanted attributes:
        $return = str_ireplace(
            array( 
                'frameborder="0"'
            ),
            '',
            $return
        );
    }
    return $return;
}, 10, 3 );

Así es como se ve el fragmento del código fuente:

<iframe width="500" height="281" src="https://www.youtube.com/embed/qUi422H0sx0?feature=oembed"frameborder="0" allow="autoplay; encrypted-media" allowfullscreen>

Y, ¿alguien sabe el segundo error con allow : se puede eliminar simplemente como el frameborder o existe una versión html5?

    
pregunta Benjamin Schlegel 11.07.2018 - 13:47

1 respuesta

4

WordPress no agrega el atributo frameborder. YouTube lo hace. Es parte de su código de inserción.

Si debe eliminarlo, puede usar el filtro embed_oembed_html para modificar el HTML devuelto:

function wpse_308247_remove_frameborder( $html, $url ) {
    // If the URL to be embedded is from YouTube.
    if ( strpos( $url, 'youtube.com' ) !== false ) {
        // Replace the frameborder attribute with an empty string.
        $html = str_replace( 'frameborder="0"', '', $html );
    }

    return $html;
}
add_filter( 'embed_oembed_html', 'wpse_308247_remove_frameborder', 10, 2 );

Pero aquí está la cosa: no obtienes nada especial para evitar errores en el validador. Lo importante es comprender los errores y los problemas que pueden causar, no intentar eliminar todas las advertencias o errores sin contexto.

Teniendo esto en cuenta, es probable que Google solo haya agregado el atributo frameborder por compatibilidad con versiones anteriores de HTML y no causará ningún efecto negativo solo por estar allí. No creo que valga la pena el esfuerzo de eliminarlo.

El atributo allow es una situación diferente. Parece ser para soportar características específicas de Chrome. Entonces, si bien es un HTML inválido, todavía tiene un propósito. Es similar al atributo frameborder , aunque dejarlo allí no causará ningún problema.

    
respondido por el Jacob Peattie 11.07.2018 - 14:21

Lea otras preguntas en las etiquetas