前段时间,一个使用ssmay主题的客户向我咨询,为什么ssmay主题使用的QQ评论表情没有效果了。以前都是正常使用的,为什么突然没有效果了呢?经查验,发现原来非插件给wordpress主题添加评论表情的方法从wordpress 最新版本中已经失去效果。这个小bug如何解决呢?下面提供解决的方法,前3步跟原方法一样。
第一步:下载QQ表情包和表情文件。
下载地址:http://pan.baidu.com/s/1jIMGU6i
密码:dedh
里面包括smiley.php表情文件和QQ表情包。
第二步:wordpress主题加载表情包文件:
在评论页面(comments.php)合适的位置,引入smiley.php文件
<?php include(TEMPLATEPATH . '/smiley.php'); ?>
第三步:把QQ表情包放到wordpress主题图片目录:
在wordpress主题图片目录images下创建一个新目录smilies,然后把QQ表情包放到这个目录下。
第四步:修改wordpress主题的表情包引入:
WordPress从4.3版本之后使用了Emoji表情,原有自定义表情快捷符号无法再自动转换为gif表情图片,所以需要wordpress主题禁用前后台的emoji表情脚本的加载,并修改css文件调整大小。下面这段代码就是对wordpress主题评论表情包的修改引入,把这段代码放到wordpress主题的functions.php文件中:
// 替换emjo表情修复自定义表情的各种问题
function disable_emoji($plugins) {
if (is_array($plugins)) {
return array_diff($plugins, array('wpemoji'));
} else {
return array();
}
}
//取当前主题下images\smilies\下表情图片路径
function custom_smilie_src($old, $img) {
return get_stylesheet_directory_uri() . '/images/smilies/' . $img;
}
function init_fixsmilie() {
global $wpsmiliestrans;
//add_filter('smilies_src','fa_smilies_src',1,10);
//默认表情文本与表情图片的对应关系(可自定义修改)
$wpsmiliestrans = array(
':mrgreen:' => 'icon_mrgreen.gif',
':neutral:' => 'icon_neutral.gif',
':twisted:' => 'icon_twisted.gif',
':arrow:' => 'icon_arrow.gif',
':shock:' => 'icon_eek.gif',
':smile:' => 'icon_smile.gif',
':???:' => 'icon_confused.gif',
':cool:' => 'icon_cool.gif',
':evil:' => 'icon_evil.gif',
':grin:' => 'icon_biggrin.gif',
':idea:' => 'icon_idea.gif',
':oops:' => 'icon_redface.gif',
':razz:' => 'icon_razz.gif',
':roll:' => 'icon_rolleyes.gif',
':wink:' => 'icon_wink.gif',
':cry:' => 'icon_cry.gif',
':eek:' => 'icon_surprised.gif',
':lol:' => 'icon_lol.gif',
':mad:' => 'icon_mad.gif',
':sad:' => 'icon_sad.gif',
'8-)' => 'icon_cool.gif',
'8-O' => 'icon_eek.gif',
':-(' => 'icon_sad.gif',
':-)' => 'icon_smile.gif',
':-?' => 'icon_confused.gif',
':-D' => 'icon_biggrin.gif',
':-P' => 'icon_razz.gif',
':-o' => 'icon_surprised.gif',
':-x' => 'icon_mad.gif',
':-|' => 'icon_neutral.gif',
';-)' => 'icon_wink.gif',
'8O' => 'icon_eek.gif',
':(' => 'icon_sad.gif',
':)' => 'icon_smile.gif',
':?' => 'icon_confused.gif',
':D' => 'icon_biggrin.gif',
':P' => 'icon_razz.gif',
':o' => 'icon_surprised.gif',
':x' => 'icon_mad.gif',
':|' => 'icon_neutral.gif',
';)' => 'icon_wink.gif',
':!:' => 'icon_exclaim.gif',
':?:' => 'icon_question.gif',
);
//移除WordPress更新所带来的Emoji钩子同时挂上主题自带的表情路径
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_action('admin_print_styles', 'print_emoji_styles');
remove_filter('the_content_feed', 'wp_staticize_emoji');
remove_filter('comment_text_rss', 'wp_staticize_emoji');
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
add_filter('tiny_mce_plugins', 'disable_emoji');
add_filter('smilies_src', 'custom_smilie_src', 10, 2);
}
add_action('init', 'init_fixsmilie', 5);
通过上面4步,ssmay主题的评论表情就可以正常发布。如果你也碰到类似的问题——wordpress CMS主题的评论表情图片不能正常使用显示,就可以试一下本章的这种方法,相信你会有所收获的。
如何非插件给wordpress CMS主题添加评论表情