WordPress carga de forma predeterminada un script (wp-emoji-release.min.js) y estilos CSS adicionales en el encabezado de todas las páginas para dar soporte a emojis antiguos. Este snippet elimina por completo esas peticiones HTTP innecesarias y limpia el código fuente sin afectar a los emojis nativos del sistema operativo o navegador.
Puedes utilizar este sencillo snippet en php desde el archivo functions.php.
Importante: no modifiques directamente el archivo functions.php del tema que tengas instalado. Genera un tema hijo con alguno de los plugins del repositorio de WordPress y actívalo. Cuando lo tengas, entra en el functions.php del tema hijo. Una alternativa es instalar algún plugin que permite incrustar código sin problema de pérdida en la actualización del tema.
/**
* Desactivar los emojis nativos y scripts asociados en WordPress
*/
add_action( 'init', 'lc_desactivar_emojis_wordpress' );
function lc_desactivar_emojis_wordpress() {
// Eliminar acciones asociadas a la impresión de scripts y estilos de emojis
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
// Eliminar filtros en feeds, emails y URLs
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
// Desactivar la conversión en el editor TinyMCE / Gutenberg si aplica
add_filter( 'tiny_mce_plugins', 'lc_desactivar_emojis_tinymce' );
// Eliminar la precarga DNS del dominio de s.w.org para emojis
add_filter( 'wp_resource_hints', 'lc_desactivar_emojis_dns_prefetch', 10, 2 );
}
/**
* Quitar el plugin de emojis del editor TinyMCE
*/
function lc_desactivar_emojis_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
}
return array();
}
/**
* Eliminar la sugerencia de conexión DNS previa a s.w.org
*/
function lc_desactivar_emojis_dns_prefetch( $urls, $relation_type ) {
if ( 'dns-prefetch' === $relation_type ) {
$emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/' );
foreach ( $urls as $key => $url ) {
if ( false !== strpos( $url, $emoji_svg_url ) ) {
unset( $urls[$key] );
}
}
}
return $urls;
}
Ahorro de peticiones HTTP: Cancela la descarga en bucle de wp-emoji-release.min.js en el frontend y en el panel de administración.
Eliminación de DNS Prefetch: Remueve la precarga de la CDN externa s.w.org, arañando milisegundos en métricas de rendimiento como TTFB y First Contentful Paint (FCP).
Emojis 100% funcionales: Los usuarios seguirán viendo todos los emojis (😀, 🚀, 🔥) porque los navegadores modernos y sistemas operativos actuales los renderizan de forma nativa sin necesidad de imágenes ni scripts de soporte.