Wyłącz emotikony wprowadzone w WP 4.2


135

Tak więc WP 4.2 wprowadził emoji (emotikony), które w zasadzie dodają JS i inne śmieci na wszystkich twoich stronach. Coś, co niektórzy mogą uznać za szokujące. Jak można całkowicie usunąć wszystkie tego przypadki?


39
Byłem tak zszokowany, że prawie upadłem na krzesło, gdy przeczytałem ogłoszenie
Tom J Nowell

2
o_O ... 9_9 ...>: - (
cjbj 10.10.16

Odpowiedzi:


193

Podłączymy się initi usuniemy działania w następujący sposób:

function disable_wp_emojicons() {

  // all actions related to 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' );

  // filter to remove TinyMCE emojis
  add_filter( 'tiny_mce_plugins', 'disable_emojicons_tinymce' );
}
add_action( 'init', 'disable_wp_emojicons' );

Będziemy potrzebować następującej funkcji filtrowania, aby wyłączyć emojikony TinyMCE:

function disable_emojicons_tinymce( $plugins ) {
  if ( is_array( $plugins ) ) {
    return array_diff( $plugins, array( 'wpemoji' ) );
  } else {
    return array();
  }
}

Teraz oddychamy i udajemy, że ta funkcja nigdy nie została dodana do rdzenia ... szczególnie, gdy mnóstwo nierozwiązanych błędów jest jeszcze zaimplementowanych.

Jest to dostępne jako wtyczka Wyłącz emoji .

Alternatywnie możesz zastąpić uśmieszki oryginalnymi wersjami poprzednich wersji WordPressa za pomocą klasycznych uśmieszków .

Aktualizacja

Możemy również usunąć emoji_svg_urlpobranie wstępne DNS, zwracając wartość false w filtrze (dzięki @yobddigi):

add_filter( 'emoji_svg_url', '__return_false' );

25
Dzięki! Nie jestem pewien, dlaczego nie tylko pozwolili ludziom włączyć / wyłączyć tę funkcję, Settings -> Writingale jest to zdecydowanie denerwujące. +1
Howdy_McGee

6
Czekamy na Twoją wtyczkę „Wyłącz emojicony” w repozytorium lub
githubie


3
Dziękuję za odpowiedź! Nie mogę uwierzyć, że jest to część rdzenia, a przynajmniej nie z „opt-in” lub sposobem na wyłączenie ~ ~ ~
phatskat

5
I szokujące jest, że dodają w nagłówku 114 wiernych skryptów i stylów, które nie są nawet pomniejszone. Dzięki za wtyczkę ...
Debajyoti Das

28

Lepsze rozwiązanie, jeśli chcesz to wyłączyć: użyj wtyczki.

Taki sam kod jak w komentarzach Christine: https://wordpress.org/plugins/disable-emojis/

Ten sam kod, który także naprawia uśmieszki, które są starsze: https://wordpress.org/plugins/classic-smilies/

Źródło: Ja, odkąd napisałem ten kod. https://plugins.trac.wordpress.org/changeset/1142480/classic-smilies


Miły! Chociaż natrafiłem na funkcje poprzez wpis github. Zaktualizowałem swoją odpowiedź za pomocą tych linków do wtyczek. Dzięki!
Christine Cooper

Tak, prawdopodobnie tak. Umieściłem go również na githubie
Otto

14

Jest to prosty sposób na usunięcie emoji. Dodaj poniższy kod do swojegofunction.php

remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' ); 

2
Zostało to już omówione powyżej w moim pytaniu.
Christine Cooper

Dzięki temu ładnie usuwa kod - dziwnie moje strony ładują się o 2 do 3 sekund dłużej, aby załadować to w moich functions.php niż bez niego.
Steve

To powinno działać przez init. Zobacz moją odpowiedź .
Christine Cooper

2

Jeśli chcesz, aby zapobiec automatycznemu Wordpress konwersji starych buźki szkoła ASCII na Unicode emotikony (jak ;-)do 😉) w swoich postach całkowicie, może chceszremove_filter('the_content', 'convert_smilies')

(Nie jestem w 100% pewien, że o to właśnie chodzi, ale to rozwiązało mój problem i mam nadzieję, że może się przydać).


0

Próbowałem kilka kodów powyżej, ale jedyne kody działają po mojej stronie to ten.

Nie zapomnij wykonać kopii zapasowej pliku functions.php przed zaimplementowaniem tych kodów.

// REMOVE WP EMOJI
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' );

Czy poprawnie przetestowałeś kod w mojej odpowiedzi?
Christine Cooper

tak, próbowałem wiele razy, strona jest na serwerze cloudflare-nginx
johnhgaspay

Po prostu dwukrotnie sprawdziłem mój kod i działa. Po dodaniu kodu do pliku functions.php spróbuj ustawić wyższy priorytet, tak jak poniżej:add_action( 'init', 'disable_wp_emojicons', 3 );
Christine Cooper

-1

Dobra wiadomość, dodałem żądanie funkcji:

Wprowadź nową opcję do WordPress WP_EMOICONS tutaj https://core.trac.wordpress.org/ticket/38252

i najwyraźniej zostało to oznaczone jako duplikat https://core.trac.wordpress.org/ticket/32102, więc możemy spodziewać się czegoś takiego

define( 'WP_EMOICONS', false );

w przyszłych wersjach WordPress.


1
Wygląda na to, że bilet nr 32102 jest zamknięty przez wontfix . +1 za próbę i optymizm ;-)
pan

2
ps: o ile rozumiem twój bilet nr 38252 został zamknięty, ponieważ był duplikatem biletu nr 32102, który wcześniej był zamknięty jako poprawka wont. Wygląda więc na to, że wtyczki będą musiały to załatwić przez wiele dni ;-) Dlatego
głosujcie

-2

Ponieważ emoji WordPress są obsługiwane przez sworg i nie są kompresowane, wpływa to na czas ładowania SVG w zależności od liczby używanych emoji, a nawet może generować ostrzeżenia w narzędziu Google PageSpeed ​​Insights.

Aby rozwiązać ten problem, możesz wyświetlać emoji bezpośrednio z samej witryny WordPress, a nie wykonując połączenia zewnętrzne za pośrednictwem js.

Można to osiągnąć, instalując wtyczkę Emoji skompresowane, która jest dostępna bezpłatnie w repozytorium wtyczek WordPress.org.

Gdy wtyczka jest aktywowana, kompresja oferuje oszczędności w zakresie od 3kb ~ 1.3kb (około 60%) na emoji.

Źródło: WPTavern

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.