Kurzerklärung

Emojis sind ein moderner Weg der Kommunikation. Die Verwendung kostet aber Ladezeit und Geschwindigkeit. Emojis wird man mit dem Disable Emojis Plugin los.

https://wordpress.org/plugins/disable-emojis/
https://wordpress.org/plugins/disable-emojis/

Die Basics

Die Entwicklung von Emoji-Support begann rund um den Februar 2015.
Mit der Version 4.2 unterstützte WordPress Emojis dann im Core.

Emojis sind diese kleinen smileyähnlichen Bildchen wie das hier:

Emoji aus dem Noto Font
Urheber: Google

Damit kann man sprachunabhängig kommunizieren, wenn man will.
Emojis helfen zumindest recht einfach und schnell, seine Emotionen in größerem Umfang wiederzugeben.

Das Problem: Viele Smartphones unterstützen Emojis von Haus aus, daher steigt die Verwendung.
Aber nicht alle Geräte und (Desktop-) Browser können von sich aus Emojis anzeigen, deshalb wird in WordPress eine kleine JavaScript-Datei geladen die überprüft, ob Emojis korrekt angezeigt werden können.

Wenn das nicht passiert, könnte es so ausschauen wie im WordPress Codex:
Textstelle ohne Emojisupport
Daher werden Emojis dort durch Bilder ersetzt, wo der Browser keine Emojis anzeigen kann.

Damit hab ich nicht so unschöne Ergebnisse wie im WordPress Codex.

 

Probleme?

  • Verlängerung der Ladezeit und der Geschwindigkeit
  • Einbinden von Inhalten, die auf fremden Servern gehostet werden

 

Damit das jetzt reibungslos funktioniert, wird eben eine kleine JavaScript-Datei geladen. Diese ist ca 5Kb groß und verursacht einen eigenen Request.
Das Script checkt jetzt, ob Emoji Support da ist. Wenn dem nicht so ist, werden Emojis durch Bilder ersetzt, damit der Inhalt nicht verschandelt ausschaut.

Welche Auswirkungen hat das auf die Seiten-Renderzeit?
Hier die Angaben aus dem entsprechenden Ticket:

Now the JS takes 1.6ms to run – 1.5ms for the JS, and 0.1ms for the style recalculation. About 0.01ms is added per emoji replaced. If we need to load Twemoji: Parsing twemoji.js: 0.8ms

Die JS Datei braucht also 1.6 ms für das Parsen. Das Behandel pro Emojis kostet 0.01ms. Wenn die Twemoji Datei geladen werden muss, kommen noch 0.8ms hinzu. (Twemoji bietet Unterstützung für Emojis, wenn der Browser/das Gerät keine Emojis versteht)

Der zweite Punkt ist, dass die Emojis von wordpress.org geladen werden, wenn diese in Bilder umgewandelt werden müssen:

?

Firebug Ansicht vom Emoji img src

Das kostet einerseits wieder einen Request und eine DNS Abfrage des wp.org Hosts und andererseits hat dann ein anderer Server als mein eigener, Zugriff auf Daten meiner Besucher.

Wie werde ich die Emoji-Unterstützung los?

Der einfachste und empfohlene Weg ist das Disable Emojis Plugin.

https://wordpress.org/plugins/disable-emojis/

Der Code hinter dem Plugin ist umfangreicher als gedacht:

function disable_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' );	
	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' );
	add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
}
add_action( 'init', 'disable_emojis' );

https://plugins.trac.wordpress.org/browser/disable-emojis/trunk/disable-emojis.php#L29

Aus der Sicht eines WordPress-Entwicklers ist das ziemlich umständlich.
Eigentlich hätte man den gleichen Weg wie beim Deaktivieren anderer JS erwartet.
Nämlich die Verwendung von wp_deregister_script.
jQuery deaktiviert man zb einfach so:

wp_deregister_script( 'jquery' );

 

Leider geht’s halt nicht so einfach. Daher entweder das Plugin installieren – was meist die besere Option ist. Alternativ kann man ja Teile des Plugin-Codes in ein (Child-)Theme übernehmen.

 

Soll ich den Emoji-Support deaktivieren?

Diese Frage muss jeder für sich selbst beantworten.

Es gibt genug Personen, die Emojis in ihren Inhalten verwenden. Wird der Support dafür deaktiviert, schauen die Text eventuell nicht mehr so gut aus.

Wird der Support deaktiviert, erspare ich mir weitere Requests und beschleunige die Ladezeit.

 

Lustiges Detail am Rande: Die Emoji-Unterstützung geht so weit, dass diese sogar in der Url erlaubt sind, siehe:


https://make.wordpress.org/core/2015/04/02/omg-emoji-%F0%9F%98%8E/

https://make.wordpress.org/core/2015/04/02/omg-emoji-%F0%9F%98%8E//

https://wordpress.org/plugins/disable-emojis/
https://wordpress.org/plugins/disable-emojis/

https://github.com/thierrypigot/mu-plugins/blob/master/deregister-emoji.php
https://github.com/thierrypigot/mu-plugins/blob/master/deregister-emoji.php

 

https://core.trac.wordpress.org/ticket/31701#comment:18
https://core.trac.wordpress.org/ticket/31701#comment:18

 

https://github.com/twitter/twemoji
https://github.com/twitter/twemoji

 

https://codex.wordpress.org/Emoji
https://codex.wordpress.org/Emoji

 

https://make.wordpress.org/core/tag/emoji/
https://make.wordpress.org/core/tag/emoji/

 

http://wordpress.stackexchange.com/a/185578
http://wordpress.stackexchange.com/a/185578