Nonaktifkan emojicons yang diperkenalkan dengan WP 4.2

135

Jadi WP 4.2 memperkenalkan emoji (smiley) yang pada dasarnya menambahkan JS dan sampah lain di seluruh halaman Anda. Sesuatu yang mungkin mengejutkan beberapa orang. Bagaimana seseorang menghapus semua contoh ini?

Christine Cooper
sumber
39
Aku sangat terkejut aku hampir ambruk di kursi saya ketika saya membaca pengumuman
Tom J Nowell
2
o_O ... 9_9 ...>: - (
cjbj

Jawaban:

193

Kami akan menghubungkan initdan menghapus tindakan sebagai berikut:

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' );

Kita membutuhkan fungsi filter berikut untuk menonaktifkan emojiicon TinyMCE:

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

Sekarang kami bernafas dan berpura-pura bahwa fitur ini tidak pernah ditambahkan ke inti ... terutama saat banyak bug yang diselesaikan belum diimplementasikan.

Ini tersedia sebagai plugin, Nonaktifkan Emoji .

Atau, Anda dapat mengganti smilies dengan versi asli dari versi WordPress sebelumnya menggunakan Classic Smilies .

Memperbarui

Kami juga dapat menghapus prefetch DNS dengan mengembalikan false pada filter emoji_svg_url(terima kasih @yobddigi):

add_filter( 'emoji_svg_url', '__return_false' );
Christine Cooper
sumber
25
Terima kasih! Saya tidak yakin mengapa mereka tidak hanya mengizinkan orang untuk mengaktifkan / menonaktifkan ini, Settings -> Writingtetapi itu jelas menjengkelkan. +1
Howdy_McGee
6
Nantikan plugin "Disable emojicons" Anda di repo atau github ;-)
birgire
3
sudah ada beberapa dari mereka (yang ini adalah salinan) wordpress.org/plugins/classic-smilies wordpress.org/plugins/disable-emojis
pcarvalho
3
Terima kasih atas jawabannya! Saya tidak percaya ini adalah bagian dari inti, setidaknya tidak dengan "opt-in" atau cara untuk menonaktifkannya ~ _ ~
phatskat
5
Dan mengejutkan melihat bahwa mereka menambahkan skrip dan gaya senilai 114 baris di header yang bahkan tidak diperkecil. Terima kasih untuk pengaya ...
Debajyoti Das
28

Solusi yang lebih baik jika Anda ingin menonaktifkan ini: gunakan plugin.

Kode yang sama dengan komentar Christine: https://wordpress.org/plugins/disable-emojis/

Kode yang sama yang juga memperbaiki smilies menjadi yang lama: https://wordpress.org/plugins/classic-smilies/

Sumber: Saya, sejak saya menulis kode itu sejak awal. https://plugins.trac.wordpress.org/changeset/1142480/classic-smilies

Otto
sumber
Bagus! Meskipun saya menemukan fungsi melalui entri github. Saya telah memperbarui jawaban saya dengan tautan plugin ini. Terima kasih!
Christine Cooper
Ya, Anda mungkin melakukannya. Saya juga meletakkannya di github untuk pengguna twitter: gist.github.com/Otto42/b79ff5428993fcff45bb
Otto
14

Ini adalah cara sederhana untuk menghapus emoji. Tambahkan kode di bawah ini kefunction.php

remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' ); 
Exclutips
sumber
2
Ini sudah tercakup dalam pertanyaan saya di atas.
Christine Cooper
Terima kasih ini menghapus kode dengan baik - anehnya halaman saya butuh 2 hingga 3 detik lebih lama untuk memuat dengan ini di functions.php saya daripada tanpa itu.
Steve
Ini harus dijalankan melalui init. Lihat jawaban saya .
Christine Cooper
2

Jika Anda ingin mencegah Wordpress secara otomatis mengkonversi smilies ASCII sekolah lama Anda ke Unicode emoji (seperti ;-)untuk 😉) dalam posting Anda sama sekali, Anda mungkin inginremove_filter('the_content', 'convert_smilies')

(Tidak 100% yakin ini pertanyaannya, tapi ini menyelesaikan masalah saya dan saya harap ini berguna bagi seseorang.)

Christallkeks
sumber
0

Saya sudah mencoba beberapa kode di atas tetapi satu-satunya kode yang berfungsi pada saya adalah yang ini.

Jangan lupa untuk mencadangkan functions.php Anda sebelum menerapkan kode-kode ini.

// 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' );
johnhgaspay
sumber
Apakah Anda benar menguji kode dalam jawaban saya?
Christine Cooper
ya saya sudah mencobanya berkali-kali, situs ada di server cloudflare-nginx
johnhgaspay
Cukup periksa kode saya dua kali dan berfungsi. Ketika Anda menambahkan kode ke file functions.php Anda, coba atur prioritas yang lebih tinggi, seperti ini:add_action( 'init', 'disable_wp_emojicons', 3 );
Christine Cooper
-1

Berita bagus, saya menambahkan permintaan fitur:

Perkenalkan opsi baru untuk WordPress WP_EMOICONS di sini https://core.trac.wordpress.org/ticket/38252

dan tampaknya ini telah ditandai sebagai duplikat https://core.trac.wordpress.org/ticket/32102 sehingga kita dapat mengharapkan sesuatu seperti

define( 'WP_EMOICONS', false );

di rilis WordPress mendatang.

prosti
sumber
1
Sepertinya tiket # 32102 ditutup dengan wontfix . +1 untuk mencoba dan menjadi optimis ;-)
birgire
2
ps: sejauh yang saya mengerti, tiket Anda # 38252 ditutup karena itu adalah duplikat untuk tiket # 32102, yang sebelumnya ditutup sebagai wontfix. Jadi sepertinya plugin harus menyelesaikan masalah ini, untuk beberapa hari yang akan datang ;-) Oleh karena itu
pilihlah
-2

Karena WordPress emoji dilayani dari sworg dan tidak dikompresi, ini memengaruhi waktu pemuatan SVG tergantung pada berapa banyak emoji yang Anda gunakan, dan bahkan dapat membuang peringatan pada alat PageSpeed ​​Insights Google.

Untuk memperbaiki masalah ini, Anda dapat melayani emoji langsung dari situs WordPress Anda sendiri dan tidak dengan membuat panggilan eksternal melalui js.

Ini dapat dicapai dengan menginstal plugin Emoji Terkompresi yang tersedia secara gratis di repositori plugin WordPress.org.

Saat plugin diaktifkan, kompresi menawarkan penghematan dalam kisaran 3kb ~ 1.3kb (sekitar% 60) per emoji.

Sumber: WPTavern

Antony Agnel
sumber