禁用WP 4.2中引入的表情符号


135

因此,WP 4.2引入了表情符号(笑脸),该表情符号基本上在整个页面上都添加了JS和其他垃圾。有些人可能会感到震惊。如何完全擦除所有这种情况?


39
当我读到公告时,我非常震惊,几乎差点倒在椅子上
Tom J Nowell

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

Answers:


193

我们将按照以下说明进行挂钩init和删除操作:

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

我们将需要以下过滤器功能来禁用TinyMCE表情符号:

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

现在,我们喘口气并假装此功能从未添加到核心中……尤其是在尚未解决大量已解决的错误时。

它可以作为插件“ 禁用表情符号”使用

或者,您可以使用Classic Smilies将smilies替换为WordPress早期版本中的原始版本。

更新资料

我们还可以通过在过滤器上返回false来删除DNS预取emoji_svg_url(感谢@yobddigi):

add_filter( 'emoji_svg_url', '__return_false' );

25
谢谢!我不确定为什么他们不仅仅允许人们通过启用/禁用此功能,Settings -> Writing但这确实很烦人。+1
Howdy_McGee

6
期待您在仓库或github中的“禁用表情符号”插件;-)
birgire 2015年


3
感谢您的回答!我不能相信这是核心的一部分,至少不是以“选入”或方法来禁用它〜_〜
phatskat

5
令人震惊的是,他们在标题中添加了甚至没有缩小的114行脚本和样式。感谢您的插件...
Debajyoti Das 2015年

28

如果要禁用此功能,更好的解决方案:使用插件。

与克里斯汀的评论相同的代码:https : //wordpress.org/plugins/disable-emojis/

相同的代码还将表情符号修复为较旧的代码:https : //wordpress.org/plugins/classic-smilies/

资料来源:我,因为我一开始就编写了该代码。 https://plugins.trac.wordpress.org/changeset/1142480/classic-smilies


真好!尽管我通过github条目遇到了这些功能。我已经使用这些插件链接更新了答案。谢谢!
克里斯汀·库珀

是的,您可能做到了。对于Twitter用户,我也将其放在github上:gist.github.com/Otto42/b79ff5428993fcff45bb
Otto

14

这是删除表情符号的简单方法。将波纹管代码添加到您的function.php

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

2
我上面的问题已经涵盖了这一点。
克里斯汀·库珀

谢谢,这很好地删除了代码-奇怪的是,将其加载到我的functions.php中的页面要比没有页面花费2至3秒的时间。
史蒂夫(Steve)

这应该通过运行init。看我的回答
克里斯汀·库珀

2

如果你想阻止的WordPress从自动转换你的老同学ASCII表情符号为Unicode表情符号(如;-)😉)在自己的帖子干脆,你可能想remove_filter('the_content', 'convert_smilies')

(不能100%地确定这是问题的所在,但这解决了我的问题,我希望对某些人来说可能会很方便。)


0

我已经在上面尝试了一些代码,但对我而言唯一有效的代码就是这一代码。

在实现这些代码之前,请不要忘记备份您的functions.php。

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

您是否正确测试了我的答案中的代码?
克里斯汀·库珀

是的,我已经尝试了很多次,站点位于cloudflare-nginx服务器上
johnhgaspay

只需仔细检查我的代码即可。当您将代码添加到functions.php文件中时,请尝试设置更高的优先级,例如:add_action( 'init', 'disable_wp_emojicons', 3 );
Christine Cooper

-1

好消息,我添加了一个功能请求:

在此处 https://core.trac.wordpress.org/ticket/38252 向WordPress WP_EMOICONS介绍一个新选项

并且显然这已被标记为重复的 https://core.trac.wordpress.org/ticket/32102, 因此我们可能会期望类似

define( 'WP_EMOICONS', false );

在未来的WordPress版本中。


1
似乎票证#32102已用wontfix关闭。+1表示尝试和乐观;-)
birgire

2
ps:据我了解,您的#38252票证已关闭,因为它与#32102票证重复,之前已作为wontfix关闭。所以它看起来像插件将不得不排序了这一点,几天来;-)因此投票它为你如此乐观;-)
birgire

-2

由于WordPress表情符号是通过sworg提供的,并且未压缩,因此这会影响SVG加载时间,具体取决于您使用的表情符号数量,甚至可能在Google的PageSpeed Insights工具上发出警告。

要解决此问题,您可以直接从WordPress网站本身提供表情符号,而不必通过js进行外部调用。

这可以通过安装插件Compressed Emoji来实现,该插件可在WordPress.org插件存储库中免费使用。

激活插件后,压缩后每个表情符号可节省3kb〜1.3kb(约60%)的费用。

资料来源:WPTavern

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.