Contents
Câu hỏi
Phiên bản WP 4.2 đã giới thiệu thêm chức năng emojis (mặt cười). Về cơ bản, emojis này sẽ thêm các JS và dữ liệu rác trong khắp các page của bạn. Nó thực sự khiến một số người bị sốc. Làm sao để gỡ bỏ hoàn toàn các trường hợp như vậy?
Christine Cooper
Tôi thực sự đã rất sốc và gần như sụp xuống trên ghế khi đọc thông báo đó. – Tom J Nowell
Câu trả lời chính xác nhất
Chúng ta sẽ thêm vào init và gỡ bỏ các hoạt động như dưới đây:
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 ta cần đến hàm lọc dưới đây để vô hiệu hóa TinyMCE emojicons:
function disable_emojicons_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( ‘wpemoji’ ) );
} else {
return array();
}
}
Bây giờ chúng ta có thể thở phào và xem như tính năng này chưa bao giờ được thêm vào lõi. Đặc biệt khi hàng loạt lỗi khác cần được giải quyết vẫn chưa được tiến hành.
Cái này sẵn có dưới dạng plugin, Disable Emojis.
Ngoài ra, bạn cũng có thể thay thế các biểu tượng 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 Classic Smilies.
Cập nhật
Chúng ta cũng có thể loại bỏ DNS prefetch bằng cách trả về false trên bộ lọc emoji_svg_url (cảm ơn bạn nhé @yobddigi):
add_filter( ’emoji_svg_url’, ‘__return_false’ );
Câu trả lời của Christine Cooper
Cảm ơn! Tôi không biết tại sao họ lại không cho phép mọi người bật/ tắt tính năng này thông qua Settings -> Writing. Nhưng điều này thực sự rất phiền toái. – Howdy_McGee
Rất mong chờ plugin vô hiệu hóa emojicons của bạn trong trong repo hoặc github. – birgire
Và nhớ cho thêm link vào câu trả lời của bạn để mọi người có thể download plugin nhé. – Pieter Goosen
Đã có những plugin như vậy rồi wordpress.org/plugins/classic-smilieswordpress.org/plugins/disable-emojis – pcarvalho
Cảm ơn câu trả lời của bạn! Tôi không thể tin nổi nó là một phần của lõi, ít nhất là với “opt-in” hay là một cách để vô hiệu hóa nó. – phatskat
Thật là sốc khi nhận ra chúng thêm 114 dòng scripts và styles ở tiêu đề. Thậm chí chúng còn không được rút gọn. Cảm ơn plugin của bạn. – Debajyoti Das
Có thể thêm cái này add_filter( ’emoji_svg_url’, ‘__return_false’ ); nó sẽ loại bỏ dns prefetch. – yobddigi
@yobddigi Rất tuyệt! Tôi đã cập nhật nó rồi. – Christine Cooper
WP đang làm khó chúng ta hơn. Kể từ phiên bản 4.3, tùy chọn tắt graphic smileys đã bị xóa khỏi cài đặt mới. Và không có “smileys” thì cũng sẽ không có “emojis”… Bây giờ bạn phải a) add_filter( ‘option_use_smilies’, function(){ return false; } ); hoặc là b) sử dụng plugin này (chính xác thì nó cũng hoạt động giống như vậy): wordpress.org/plugins/keep-emoticons-as-text. Tôi thực sự thắc mắc ai đã tự nói với mình “Yeah, hãy thay đổi nội dung của người dùng bằng PHP, không có câu hỏi nào được hỏi cả. – jave.web
Một giải pháp tốt hơn để vô hiệu hóa nó là dùng plugin.
Code giống như trong bình luận của Christine: https://wordpress.org/plugins/disable-emojis/
Code tương tự cũng được sử dụng để sửa các smilies thành những cái cũ hơn: https://wordpress.org/plugins/classic-smilies/
Nguồn: tôi, vì tôi là người viết code đó đầu tiên.
https://plugins.trac.wordpress.org/changeset/1142480/classic-smilies
Câu trả lời của Otto
Tuyệt! Mặc dù tôi tìm thấy hàm này qua một github entry. Tôi đã cập nhật những link plugin này vào câu trả lời của tôi. Cảm ơn! – Christine Cooper
Vâng, bạn có thể làm như vậy. Tôi cũng đã cho nó vào github cho một người dùng twitter: gist.github.com/Otto42/b79ff5428993fcff45bb – Otto
Đây là một cách đơn giản để gỡ bỏ emoji. Thêm đoạn code dưới đây vào function.php của bạn:
remove_action( ‘wp_head’, ‘print_emoji_detection_script’, 7 );
remove_action( ‘wp_print_styles’, ‘print_emoji_styles’ );
Câu trả lời của Exclutips
Câu trả lời của tôi ở trên cũng đã nói đến điều này. – Christine Cooper
Cảm ơn, mã gỡ bỏ này hoạt động rất tốt. Thật kì lạ là khi thực hiện thao tác này các trang của tôi mất thêm 2 đến 3 giây để load. – Steve
Bạn nên chạy bằng init. Hãy xem câu trả lời của tôi ở trên. – Christine Cooper
Nếu bạn muốn chặn WordPress tự động chuyển ASCII smilies cũ của bạn thành Unicode emojis (giống như ;-)
thành ?
) trong các bài đăng của bạn, bạn có thể remove_filter(‘the_content’, ‘convert_smilies’)
(Không chắc chắn là câu trả lời của tôi trả lời đúng ý của câu hỏi. Nhưng nó đã giúp tôi giải quyết vấn đề của mình và mong là nó sẽ hữu ích cho ai đó.
Câu trả lời của Christallkeks
Tôi đã thử một số code ở trên nhưng chỉ có một cái giải quyết được vấn đề của tôi, đó là cái này.
Đừng quên sao lưu tệp functions.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’ );
Câu trả lời của johnhgaspay
Bạn đã kiểm tra một cách chính xác các code trong câu trả lời của tôi? – Christine Cooper
Vâng, tôi đã thử đi thử lại một số lần, trang web hoạt động trên máy chủ cloudflare-nginx. – johnhgaspay
Tôi đã thử kiểm tra lại code của tôi một lần nữa và thấy nó hoạt động tốt. Khi bạn thêm code vào file functions.php của bạn, hãy thử đặt mức độ ưu tiên cao hơn, giống như thế này: add_action( ‘init’, ‘disable_wp_emojicons’, 3 ); – Christine Cooper