Vô hiệu hóa biểu tượng cảm xúc được giới thiệu với WP 4.2


135

Vì vậy, WP 4.2 đã giới thiệu biểu tượng cảm xúc (mặt cười) về cơ bản thêm JS và các thứ linh tinh khác trên tất cả các trang của bạn. Một cái gì đó một số người có thể tìm thấy gây sốc. Làm thế nào để xóa hoàn toàn tất cả các trường hợp này?


39
Tôi đã rất sốc, tôi suýt ngã xuống ghế khi đọc thông báo
Tom J Nowell

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

Câu trả lời:


193

Chúng tôi sẽ nối vào initvà xóa các hành động như sau:

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

Chúng tôi sẽ cần chức năng lọc sau đây để tắt biểu tượng cảm xúc TinyMCE:

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

Bây giờ chúng tôi thở và giả vờ tính năng này không bao giờ được thêm vào lõi ... đặc biệt là trong khi hàng tấn lỗi đã được giải quyết vẫn chưa được thực hiện.

Điều này có sẵn như là một plugin, Vô hiệu hóa biểu tượng cảm xúc .

Ngoài ra, bạn có thể thay thế các mặt cười bằng các phiên bản gốc từ các phiên bản trước của WordPress bằng cách sử dụng Cổ điển mặt cười .

Cập nhật

Chúng tôi cũng có thể xóa tìm nạp trước DNS bằng cách trả về false trên bộ lọc emoji_svg_url(cảm ơn @yobddigi):

add_filter( 'emoji_svg_url', '__return_false' );

25
Cảm ơn! Tôi không chắc tại sao họ không cho phép mọi người kích hoạt / vô hiệu hóa điều này thông qua Settings -> Writingnhưng điều đó thực sự gây phiền nhiễu. +1
Howdy_McGee

6
Hãy chờ đợi plugin "Vô hiệu hóa biểu tượng cảm xúc" của bạn trong repo hoặc github ;-)
birgire

3
đã có một vài trong số họ (đây là bản sao) wordpress.org/plugins/
classic

3
Cảm ơn câu trả lời! Tôi không thể tin rằng đây là một phần cốt lõi, ít nhất là không phải với "chọn tham gia" hoặc cách vô hiệu hóa nó ~ _ ~
phatskat

5
Và thật sốc khi thấy họ thêm 114 dòng giá trị tập lệnh và kiểu trong tiêu đề thậm chí không được thu nhỏ. Cảm ơn các plugin ...
Debajyoti Das

28

Giải pháp tốt hơn nếu bạn muốn vô hiệu hóa điều này: sử dụng một plugin.

Mã giống như từ nhận xét của Christine: https://wordpress.org/plugins/disable-emojis/

Cùng một mã cũng sửa các mặt cười thành những cái cũ hơn: https://wordpress.org/plugins/ classic-smflower /

Nguồn: Tôi, vì tôi đã viết mã đó ở nơi đầu tiên. https://plugins.trac.wordpress.org/changeset/1142480/ classic-smflower


Đẹp! Mặc dù tôi đã xem qua các chức năng thông qua một mục github. Tôi đã cập nhật câu trả lời của mình với các liên kết plugin này. Cảm ơn!
Christine Cooper

Đúng, bạn có thể đã làm. Tôi cũng đặt nó trên github cho một người dùng twitter: gist.github.com/Otto42/b79ff5428993fcff45bb
Otto

14

Đây là cách đơn giản để loại bỏ biểu tượng cảm xúc. Thêm mã dưới đây vào của bạnfunction.php

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

2
Điều này đã được bao phủ trong câu hỏi của tôi ở trên.
Christine Cooper

Cảm ơn điều này sẽ loại bỏ mã độc đáo - kỳ lạ là các trang của tôi mất thời gian tải từ 2 đến 3 giây với hàm này trong tệp.php hơn là không có.
Steve

Điều này sẽ chạy qua init. Xem câu trả lời của tôi .
Christine Cooper

2

Nếu bạn muốn ngăn chặn Wordpress từ tự động chuyển đổi cũ smilies ASCII học của bạn thành Unicode biểu tượng cảm xúc (như ;-)để 😉) trong bài viết của mình hoàn toàn, bạn có thể muốnremove_filter('the_content', 'convert_smilies')

(Không chắc chắn 100% đây là câu hỏi về vấn đề gì, nhưng điều này đã giải quyết vấn đề của tôi và tôi hy vọng nó có thể hữu ích cho ai đó.)


0

Tôi đã thử một số mã ở trên nhưng mã duy nhất hoạt động ở cuối là mã này.

Đừng quên sao lưu các hàm.php của bạn trước khi triển khai các mã này.

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

Bạn đã kiểm tra đúng mã trong câu trả lời của tôi?
Christine Cooper

vâng, tôi đã thử nó nhiều lần, trang web trên máy chủ cloudflare-nginx
johnhgaspay

Chỉ cần kiểm tra lại mã của tôi và nó đang hoạt động. Khi bạn thêm mã vào tệp tin.php. Hãy thử đặt mức độ ưu tiên cao hơn, như sau:add_action( 'init', 'disable_wp_emojicons', 3 );
Christine Cooper

-1

Tin tốt, tôi đã thêm một yêu cầu tính năng:

Giới thiệu một tùy chọn mới cho WordPress WP_EMOICONS tại đây https://core.trac.wordpress.org/ticket/38252

và rõ ràng điều này đã được đánh dấu là trùng lặp https://core.trac.wordpress.org/ticket/32102 vì vậy chúng tôi có thể mong đợi một cái gì đó như

define( 'WP_EMOICONS', false );

trong các bản phát hành WordPress trong tương lai.


1
Có vẻ như vé # 32102 được đóng bằng wontfix . +1 để thử và
nuôi ong

2
ps: theo như tôi hiểu, vé số 38252 của bạn đã bị đóng vì nó trùng với vé # 32102, trước đây đã bị đóng dưới dạng wontfix. Vì vậy, có vẻ như các plugin sẽ phải sắp xếp thứ này, trong nhiều ngày tới ;-) Do đó, việc bỏ phiếu cho bạn rất lạc quan ;-)
birgire

-2

Vì biểu tượng cảm xúc WordPress được phục vụ từ sworg và chúng không bị nén, điều này ảnh hưởng đến thời gian tải SVG tùy thuộc vào số lượng biểu tượng cảm xúc bạn đang sử dụng và thậm chí có thể đưa ra cảnh báo trên công cụ PageSpeed ​​Insights của Google.

Để khắc phục sự cố này, bạn có thể phân phát biểu tượng cảm xúc trực tiếp từ chính trang web WordPress của mình chứ không phải bằng cách thực hiện các cuộc gọi bên ngoài thông qua js.

Điều này có thể đạt được bằng cách cài đặt plugin Emoji nén có sẵn miễn phí trong kho lưu trữ plugin WordPress.org.

Khi plugin được kích hoạt, quá trình nén cung cấp mức tiết kiệm trong khoảng 3kb ~ 1,3kb (khoảng% 60) cho mỗi biểu tượng cảm xúc.

Nguồn: WPTavern

Licensed under cc by-sa 3.0 with attribution required.