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

评论

当我读到公告时,我感到非常震惊,几乎跌倒在椅子上

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

#1 楼

我们将挂接到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();
  }
}


现在,我们喘口气并假装此功能从未添加到内核中……尤其是在尚未实现大量已解决的bug的情况下。

此功能可作为插件使用,禁用表情符号。

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

更新

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

add_filter( 'emoji_svg_url', '__return_false' );


评论


谢谢!我不确定为什么他们不只是允许人们通过“设置”->“书写”来启用/禁用此功能,但这确实很烦人。 +1

– Howdy_McGee♦
15年4月27日在19:42

期待您在repo或github中的“ Disable emojicons”插件;-)

–birgire
2015年4月27日19:44



已经有几个(这是一个副本)wordpress.org/plugins/classic-smilies wordpress.org/plugins/disable-emojis

– pcarvalho
15年4月28日在17:38

感谢你的回答!我不敢相信这是核心的一部分,至少不是“选择加入”或禁用它的一种方式〜_〜

–phatskat
15年4月29日在21:47

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

– Debajyoti Das
15年7月22日在12:39



#2 楼

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

与Christine的注释中的代码相同:
https://wordpress.org/plugins/disable-emojis/

同样的代码也将表情符号修正为较旧的代码:
https://wordpress.org/plugins/classic-smilies/

来源:我,因为我写过该代码放在首位。
https://plugins.trac.wordpress.org/changeset/1142480/classic-smilies

评论


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

–克里斯汀·库珀♦
2015年4月29日下午1:00

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

–奥托
15年4月29日在13:07

#3 楼

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

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


评论


我上面的问题已经涵盖了这一点。

–克里斯汀·库珀♦
15年7月22日在12:38

谢谢,这很好地删除了代码-奇怪的是,将其加载到我的functions.php中的页面要比不使用它多花费2到3秒。

–史蒂夫
17年7月21日在12:11

这应该通过init运行。看我的答案。

–克里斯汀·库珀♦
17年8月19日在17:35

#4 楼

如果您想阻止Wordpress将帖子中的老式ASCII表情符号自动转换为Unicode表情符号(例如;-)😉),则可能需要remove_filter('the_content', 'convert_smilies')

(不是100%确保这是什么问题有关,但这解决了我的问题,希望对某些人来说很方便。)

#5 楼

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

在此处https://core.trac.wordpress.org/ticket/38252

,显然这已被标记为重复
https://core.trac.wordpress.org/ticket/32102
,所以我们可能会期望像

define( 'WP_EMOICONS', false );
< br << />在将来的WordPress版本中。

评论


票证#32102似乎已关闭,且无法关闭。 +1表示乐于助人和乐观;-)

–birgire
16-10-7在14:13



ps:据我所知,您的#38252票证已关闭,因为它与#32102票证重复,之前已作为wintfix关闭。因此,看起来插件将不得不在未来几天内解决这个问题;-)因此,为您如此乐观而投票吧;-)

–birgire
16-10-7在14:23



#6 楼

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

在实现这些代码之前,别忘了备份您的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' );


评论


您是否正确测试了我的答案中的代码?

–克里斯汀·库珀♦
17年7月10日在7:44

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

–johnhenrygaspay
17年7月10日在8:23

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

–克里斯汀·库珀♦
17年7月10日在9:22

#7 楼

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

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

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

激活插件后,压缩可节省以下费用:每个表情符号的范围介于3kb〜1.3kb(大约60%)。

来源:WPTavern