Deshabilitar emojis introducidos con WordPress 4.2

27 abr 2015, 22:37:49
Vistas: 64.3K
Votos: 147

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?

2
Comentarios

Me quedé tan impactado que casi me desmayo en mi silla cuando leí el anuncio

Tom J Nowell Tom J Nowell
27 abr 2015 23:33:57

o_O ... 9_9 ... >:-(

cjbj cjbj
10 oct 2016 11:20:33
Todas las respuestas a la pregunta 7
9
204

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' );
27 abr 2015 22:37:49
Comentarios

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

Howdy_McGee Howdy_McGee
27 abr 2015 22:42:05

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

birgire birgire
27 abr 2015 22:44:05

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

Pieter Goosen Pieter Goosen
27 abr 2015 22:53:54

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

pcarvalho pcarvalho
28 abr 2015 20:38:15

¡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 ~_~

phatskat phatskat
30 abr 2015 00:47:19

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...

Debajyoti Das Debajyoti Das
22 jul 2015 15:39:01

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

thebigtine thebigtine
13 sept 2016 12:51:57

@yobddigi Muy bien, ¡lo he actualizado en consecuencia!

Christine Cooper Christine Cooper
13 sept 2016 13:37:08

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... " ... -_-

jave.web jave.web
12 abr 2017 18:22:43
Mostrar los 4 comentarios restantes
2
29

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

29 abr 2015 01:02:29
Comentarios

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

Christine Cooper Christine Cooper
29 abr 2015 04:00:05

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

Otto Otto
29 abr 2015 16:07:18
3
15

Esta es la forma sencilla de eliminar los emojis. Agrega el siguiente código a tu archivo function.php

remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' ); 
25 jun 2015 00:48:49
Comentarios

Esto ya fue cubierto en mi pregunta anterior.

Christine Cooper Christine Cooper
22 jul 2015 15:38:31

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.

Steve Steve
21 jul 2017 15:11:31

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

Christine Cooper Christine Cooper
19 ago 2017 20:35:42
0

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).

13 jun 2017 17:48:00
3

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' );
10 jul 2017 07:33:11
Comentarios

¿Probaste adecuadamente el código en mi respuesta?

Christine Cooper Christine Cooper
10 jul 2017 10:44:26

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

johnhgaspay johnhgaspay
10 jul 2017 11:23:26

Acabo de verificar nuevamente mi código y está funcionando. Cuando agregues el código a tu archivo functions.php, intenta establecer una prioridad más alta, así: add_action( 'init', 'disable_wp_emojicons', 3 );

Christine Cooper Christine Cooper
10 jul 2017 12:22:48
2
-1

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.

7 oct 2016 16:04:59
Comentarios

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

birgire birgire
7 oct 2016 17:13:09

PD: Por lo que entiendo, tu ticket #38252 fue cerrado porque era un duplicado del ticket #32102, que previamente se cerró como wontfix. Así que parece que los plugins tendrán que resolver esto, por mucho tiempo ;-) Por eso te voto positivo por ser tan optimista ;-)

birgire birgire
7 oct 2016 17:23:04
0
-2

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

15 nov 2016 16:17:59