¡Que no quiero reproductores automáticos en WordPress!

Una de las características que más gusta a todo el mundo, y cuando digo todo es todo, es lo fácil que es incrustar en tu contenido vídeos, imágenes externas, todo tipo de contenido dinámico.

Esto es gracias a oEmbed, del que ya hemos visto en otros artículos sus posibilidades.

¡Pero yo no quiero embeds automáticos!

Ahora bien, nunca se puede estar a gusto de todo el mundo, y el otro día en el artículo sobre cómo insertar vídeos en WordPress un lector me comentaba que a él le puteaba esto de los embeds, porque quería usar otro reproductor pero salía automáticamente el de WordPress y claro, no le valía.

Así que me puse a revisar todos los modos que hay por ahí de desactivar esta bonita característica de WordPress, por si te pasa también a ti que no es lo tuyo, que no te vale vaya.

¿Debería desactivar los incrustados?

Un momento antes de seguir…

Los incrustados de WordPress son muy útiles, pero …

  • Si no quieres que otros compartan tu contenido en sus sitios incrustándolo fácilmente.
  • Si no vas a compartir contenido de otros en tu sitio incrustándolo fácilmente.
  • Si quieres optimizar más tu sitio reduciendo peticiones HTTP.

Solo si quieres que se cumplan estas 3 premisas, todas, no una o dos solamente, las tres, solo entonces deberías desactivar los incrustados de WordPress.

¡Para, no sigas! Por aclarar, ¿qué era eso de los incrustados oEmbed?

Fácil, la posibilidad de incrustar contenido dinámico de sitios compatibles con oEmbed en tu sitio solamente pegando la URL de dónde está alojado el contenido.

Por ejemplo, si quieres mostrar un vídeo de YouTube, una lista de Spotify, una foto de Instagram, solo tienes que copiar la URL dónde se ve ese contenido, a continuación pegas la URL en tu editor de WordPress y … magia, el contenido aparece en todo su esplendor.

En este minitutorial en vídeo tienes un ejemplo…

WordPress en un pasado lejano permitía desactivarlos fácilmente

Pues sí, resulta que antes de la versión 3.5, en los ajustes de WordPress había una casilla para desactivar la funcionalidad de oEmbed, más fácil imposible.

Era así…

Teníamos esa práctica casilla de selección en la que activar o desactivar los «auto-incrustados», que es como los llamábamos entonces.

Pero, como te digo, esto cambió en WordPress 3.5, y esta libertad de decisión quedó solo para amantes del código.

Pues, a partir de esta versión, para desactivar oEmbed había que añadir esta línea al archivo functions.php del tema activo o, mucho mejor, a nuestro plugin de ñapas y personalizaciones:

// Desactivar oEmbed
remove_shortcode( 'embed' );
remove_filter( 'the_content', [ $GLOBALS['wp_embed'], 'autoembed' ], 8 );
remove_filter( 'the_content', [ $GLOBALS['wp_embed'], 'run_shortcode' ], 8 );
remove_action( 'edit_form_advanced', [ $GLOBALS['wp_embed'], 'maybe_run_ajax_cache' ] );

Con este código desactivamos la característica oEmbed que te digo, del todo, consiguiendo que no se aplique el JavaScript wp-embed.min.js en ninguna parte.

¿Se puede desactivar de otra manera?

Pues claro, un método diferente es así:

/* Desactivar oEmbed */
function ayudawp_quitar_oembed(){
 wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'ayudawp_quitar_oembed' );

¿Algún otro modo de desactivar oEmbed?

Mira que te estás poniendo exigente ¿no te han gustado los anteriores?

Venga, aquí tienes otro método:

/* Desactivar oEmbed */
function disable_embeds_code_init() {

 // Quita la variable de la REST API.
 remove_action( 'rest_api_init', 'wp_oembed_register_route' );

 // Desactivamos la detección automática de servicios oEmbed.
 add_filter( 'embed_oembed_discover', '__return_false' );

 // No filtramos los resultados de oEmbed.
 remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );

 // Quitamos los enlaces de detección de oEmbed.
 remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

 // Quitamos el JavaScript de oEmbed tanto de la administración como de la web.
 remove_action( 'wp_head', 'wp_oembed_add_host_js' );
 add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );

 // Quitamos todas las reglas de rewrite de los incrustados.
 add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );

 // Quitamos el filtro del resultado de oEmbed antes de que se haga ninguna petición HTTP.
 remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
}

add_action( 'init', 'disable_embeds_code_init', 9999 );

function disable_embeds_tiny_mce_plugin($plugins) {
    return array_diff($plugins, array('wpembed'));
}

function disable_embeds_rewrites($rules) {
    foreach($rules as $rule => $rewrite) {
        if(false !== strpos($rewrite, 'embed=true')) {
            unset($rules[$rule]);
        }
    }
    return $rules;
}

Mola el codiguito ¿eh? ¿No dirás que no está detallado todo?

Sí … está bien … ¿no hay un modo más … eh … fácil? Como en WordPress 3.4

Ah vale, ya te pillo, un plugin o algo ¿no?

De acuerdo, también hay algún plugin para hacer esta cosa de desactivar los incrustados oEmbed de WordPress.

El que te recomiendo de llama Disable Embeds.

Una vez lo hayas instalado y activado ya está, no solo desactiva todo el JavaScript relacionado con oEmbed, también dejan de funcionar los bloques de incrustados del editor.

También hay plugins de optimización como WP Disable, entre cuyas opciones está la de desactivar los oEmbed, pero si optas por él comprueba que no estás duplicando optimizaciones con otros plugins, como el de caché u otros.

Advertencia importante

Ya sé que seguramente esté de más recordarlo, pero por si acaso …  no uses todos los códigos, o el plugin, que te esto poniendo aquí, elige uno, el que sea más óptimo para tu sitio.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(2 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

1 comentario en “¡Que no quiero reproductores automáticos en WordPress!”

  1. Gracias Fernando, porque me da que fui yo quien te preguntó. Entiendo que con código puedo seleccionar a qué página afecta (poniendo css en dicha página), ¿o afecta a toda la web? De nuevo gracias!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido