王尘宇王尘宇

研究百度干SEO做推广变成一个被互联网搞的人

WordPress 教程:WordPress 4.2后 头部多出的Emoji脸色的处置惩罚要领

假如你更新到 WordPress 的 4.2 版本,检察网页源代码你会发明 WordPress 会自动在加载一段用于支撑 emjo 脸色的剧本(JS+CSS)。关于大部份人来讲,这个是非常鸡肋的功用,再加上 GFW 的壮大气力,反而影响加载速率。

我们有两种解决要领:启用或禁用。

缘由剖析

剧本就是相似下面的代码:

  1. <script type="text/javascript">

  2.  window._wpemojiSettings = {"baseUrl":"http:\/\/s.w.org\/images\/core\/emoji\/72x72\/","ext":".png","source":{"concatemoji":"http:\/\/devework.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.2"}};

  3.  !function(a,b,c){function d(a){var c=b.createElement("canvas"),d=c.getContext&&c.getContext("2d");return d&&d.fillText?(d.textBaseline="top",d.font="600 32px Arial","flag"===a?(d.fillText(String.fromCharCode(55356,56812,55356,56807),0,0),c.toDataURL().length>3e3):(d.fillText(String.fromCharCode(55357,56835),0,0),0!==d.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f;c.supports={simple:d("simple"),flag:d("flag")},c.supports.simple&&c.supports.flag||(f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);

  4.  </script>

  5.  <style type="text/css">

  6.  img.wp-smiley,

  7.  img.emoji {

  8.  display: inline !important;

  9.  border: none !important;

  10.  box-shadow: none !important;

  11.  height: 1em !important;

  12.  width: 1em !important;

  13.  margin: 0 .07em !important;

  14.  vertical-align: -0.1em !important;

  15.  background: none !important;

  16.  padding: 0 !important;

  17.  }

  18.  </style>

由于WordPress 更新 4.2 的一个新增功用就是支撑 emjo 脸色,但看部份加载源居然是 wp.org 的 js 文件。关于大部份人来讲,这个是非常鸡肋的功用。

禁用:移除 WordPress 4.2 中前台自动加载的 emoji 剧本

既然功用鸡肋,不如直接移撤除来得越发快速。代码提取自 Disable Emojis 插件,能够放在主题目录下的 functions.php 文件中:

  1. /**

  2.  * Disable the emoji's

  3.  */

  4.  function disable_emojis() {

  5.  remove_action( 'wp_head', 'print_emoji_detection_script', 7 );

  6.  remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );

  7.  remove_action( 'wp_print_styles', 'print_emoji_styles' );

  8.  remove_action( 'admin_print_styles', 'print_emoji_styles' );

  9.  remove_filter( 'the_content_feed', 'wp_staticize_emoji' );

  10.  remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );

  11.  remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );

  12.  add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );

  13.  }

  14.  add_action( 'init', 'disable_emojis' );

  15. /**

  16.  * Filter function used to remove the tinymce emoji plugin.

  17.  */

  18.  function disable_emojis_tinymce( $plugins ) {

  19.  if ( is_array( $plugins ) ) {

  20.  return array_diff( $plugins, array( 'wpemoji' ) );

  21.  } else {

  22.  return array();

  23.  }

  24.  }

启用:转存至当地挪用 Emoji 脸色

WordPress 官方将此功用会写入正式版一定有其来由。但我们晓得 WP 的 CDN 早就被*掉,唯一要领就是转存到当地,使 WP 辨认当地 Emoji 脸色。

Twitter Emoji 脸色包下载,下载后直接解压至主题目录,文件夹名稳定。将以下代码放在主题目录下的 functions.php 文件中:

  1. //起首补全wp的脸色库

  2.  function smilies_reset() {

  3.  global $wpsmiliestrans, $wp_smiliessearch;

  4.  // don't bother setting up smilies if they are disabled

  5.  if (!get_option('use_smilies')) {

  6.  return;

  7.  }

  8.  $wpsmiliestrans_fixed = array(

  9.  ':mrgreen:' => "\xf0\x9f\x98\xa2",

  10.  ':smile:' => "\xf0\x9f\x98\xa3",

  11.  ':roll:' => "\xf0\x9f\x98\xa4",

  12.  ':sad:' => "\xf0\x9f\x98\xa6",

  13.  ':arrow:' => "\xf0\x9f\x98\x83",

  14.  ':-(' => "\xf0\x9f\x98\x82",

  15.  ':-)' => "\xf0\x9f\x98\x81",

  16.  ':(' => "\xf0\x9f\x98\xa7",

  17.  ':)' => "\xf0\x9f\x98\xa8",

  18.  ':?:' => "\xf0\x9f\x98\x84",

  19.  ':!:' => "\xf0\x9f\x98\x85",

  20.  );

  21.  $wpsmiliestrans = array_merge($wpsmiliestrans, $wpsmiliestrans_fixed);

  22.  }

  23.  //替代cdn途径

  24.  function static_emoji_url() {

  25.  return get_bloginfo('template_directory').'/72x72/';

  26.  }

  27.  //让文章内容和批评支撑 emoji 并禁用 emoji 加载的杂乱无章的剧本

  28.  function reset_emojis() {

  29.  remove_action('wp_head', 'print_emoji_detection_script', 7);

  30.  remove_action('admin_print_scripts', 'print_emoji_detection_script');

  31.  remove_action('wp_print_styles', 'print_emoji_styles');

  32.  remove_action('admin_print_styles', 'print_emoji_styles');

  33.  add_filter('the_content', 'wp_staticize_emoji');

  34.  add_filter('comment_text', 'wp_staticize_emoji',50); //在转换为脸色后再转为静态图片

  35.  smilies_reset();

  36.  add_filter('emoji_url', 'static_emoji_url');

  37.  }

  38.  add_action('init', 'reset_emojis');

  39.  //输出脸色

  40.  function fa_get_wpsmiliestrans(){

  41.  global $wpsmiliestrans;

  42.  $wpsmilies = array_unique($wpsmiliestrans);

  43.  foreach($wpsmilies as $alt => $src_path){

  44.  $emoji = str_replace(array('&#x', ';'), '', wp_encode_emoji($src_path));

  45.  $output .= '<a class="add-smily" data-smilies="'.$alt.'"><img class="wp-smiley" src="'.get_bloginfo('template_directory').'/72x72/'. $emoji .'png" /></a>';

  46.  }

  47.  return $output;

  48.  }

相关文章

评论列表

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。