Deshabilitar emojis introducidos con WordPress 4.2
WordPress 4.2 introdujo emojis (emoticonos) que básicamente agregan JavaScript y otros elementos innecesarios en todas tus páginas. Algo que algunas personas pueden encontrar sorprendente. ¿Cómo se pueden eliminar completamente todas las instancias de esto?
Conectaremos con el hook init
y eliminaremos las acciones de la siguiente manera:
function disable_wp_emojicons() {
// todas las acciones relacionadas con emojis
remove_action( 'admin_print_styles', 'print_emoji_styles' );
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_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
// filtro para eliminar emojis de TinyMCE
add_filter( 'tiny_mce_plugins', 'disable_emojicons_tinymce' );
}
add_action( 'init', 'disable_wp_emojicons' );
Necesitaremos la siguiente función de filtro para desactivar los emojis en TinyMCE:
function disable_emojicons_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
} else {
return array();
}
}
Ahora respiramos y fingimos que esta función nunca fue añadida al núcleo... especialmente cuando muchos errores resueltos están aún por implementarse.
Esto está disponible como un plugin, Disable Emojis.
Alternativamente, puedes reemplazar los emoticonos con las versiones originales de versiones anteriores de WordPress usando Classic Smilies.
Actualización
También podemos eliminar el prefetch de DNS devolviendo false en el filtro emoji_svg_url
(gracias @yobddigi):
add_filter( 'emoji_svg_url', '__return_false' );

¡Gracias! No estoy seguro de por qué no permitieron simplemente habilitar/deshabilitar esto mediante Configuración -> Escritura
, pero definitivamente es molesto. +1

Espero con ansias tu plugin "Desactivar emojis" en el repositorio o GitHub ;-)

Y recuerda incluir un enlace en tu respuesta donde podamos descargar el plugin ;-)

ya hay un par de ellos (del cual este es una copia) https://wordpress.org/plugins/classic-smilies/ https://wordpress.org/plugins/disable-emojis/

¡Gracias por la respuesta! No puedo creer que esto sea parte del núcleo, al menos no con una opción de "opt-in" o una forma de desactivarlo ~_~

Y es impactante ver que añaden 114 líneas de scripts y estilos en el encabezado que ni siquiera están minimizados. Gracias por el plugin...

tal vez considera agregar este también: add_filter( 'emoji_svg_url', '__return_false' );
esto elimina el dns prefetch

WP nos está golpeando fuerte - desde la versión 4.3 "la opción para deshabilitar los smileys gráficos fue eliminada de las nuevas instalaciones" y no, los "smileys" no son "emojis"... Ahora tienes que a) add_filter( 'option_use_smilies', function(){ return false; } );
o b) usar este plugin (que hace EXACTAMENTE lo mismo): https://wordpress.org/plugins/keep-emoticons-as-text/ Realmente me pregunto quién fue y se dijo a sí mismo "Sí, vamos a alterar el contenido de los usuarios mediante PHP, sin preguntar... " ... -_-

Mejor solución si deseas desactivar esto: usa un plugin.
Mismo código que en los comentarios de Christine: https://wordpress.org/plugins/disable-emojis/
Mismo código que también corrige los smileys para usar los antiguos: https://wordpress.org/plugins/classic-smilies/
Fuente: Yo, ya que escribí ese código originalmente. https://plugins.trac.wordpress.org/changeset/1142480/classic-smilies

¡Genial! Aunque encontré las funciones a través de una entrada en GitHub. He actualizado mi respuesta con estos enlaces de plugins. ¡Gracias!

Sí, probablemente lo hiciste. También lo subí a GitHub para un usuario de Twitter: https://gist.github.com/Otto42/b79ff5428993fcff45bb

Gracias, esto elimina el código perfectamente - curiosamente mis páginas tardan de 2 a 3 segundos más en cargar con esto en mi functions.php que sin ello.

Esto debería ejecutarse mediante init
. Mira mi respuesta.

Si deseas evitar que WordPress convierta automáticamente tus emoticonos ASCII tradicionales a emojis Unicode (como ;-)
a ) en tus publicaciones, puedes usar
remove_filter('the_content', 'convert_smilies')
(No estoy 100% seguro de que esto sea exactamente lo que pregunta el usuario, pero resolvió mi problema y espero que pueda ser útil para alguien más).

He probado algunos códigos anteriores pero el único que funciona en mi caso es este.
No olvides hacer una copia de seguridad de tu functions.php antes de implementar estos códigos.
// ELIMINAR EMOJIS DE WP
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );

Sí, lo he intentado muchas veces, el sitio está en un servidor cloudflare-nginx

Buenas noticias, he añadido una solicitud de característica:
Introducir una nueva opción en WordPress WP_EMOICONS aquí https://core.trac.wordpress.org/ticket/38252
y aparentemente ha sido marcada como duplicada https://core.trac.wordpress.org/ticket/32102 así que podríamos esperar algo como
define( 'WP_EMOICONS', false );
en futuras versiones de WordPress.

Parece que el ticket #32102 está cerrado con wontfix. +1 por intentarlo y ser optimista ;-)

Dado que los emojis de WordPress se sirven desde s.w.org y no están comprimidos, esto afecta el tiempo de carga de los SVG dependiendo de cuántos emojis estés utilizando, e incluso puede generar advertencias en la herramienta PageSpeed Insights de Google.
Para solucionar este problema, puedes servir los emojis directamente desde tu sitio WordPress y no mediante llamadas externas a través de JavaScript.
Esto se puede lograr instalando el plugin Compressed Emoji que está disponible gratuitamente en el repositorio de plugins de WordPress.org.
Cuando el plugin está activado, la compresión ofrece ahorros en el rango de 3kb ~ 1.3kb (aproximadamente un 60%) por cada emoji.
Fuente: WPTavern
