关于评论表情的文章公开的已经有两篇了:
http://www.inlojv.com/wordpress-comt-add-custom-smiley.html
http://www.inlojv.com/wordpress-load-custom-smiley.html
这两篇中添加表情的方式比较繁杂,代码比较多,而本篇教程用比较简单的方法即可实现:

首先下载表情包

表情包下载地址
将下载好的表情包解压出smilies文件夹 放在主题目录/img/文件夹里面

自定义表情替换函数

将下面的代码加入到functions.php里面,这段代码有两部分,看注释就明白了:

// 调用路径评论表情改造,使评论中显示表情。如需更换表情,img/smilies/下替换
add_filter ( 'smilies_src', 'inlojv_custom_smilies', 10, 2 );
function inlojv_custom_smilies($img_src, $img) {
    return get_stylesheet_directory_uri () . '/img/smilies/' . $img;
}
//输出评论表情函数
function inlo_smilies(){
  $a = array( 'mrgreen','razz','sad','smile','oops','grin','eek','???','cool','lol','mad','twisted','roll','wink','idea','arrow','neutral','cry','?','evil','shock','!' );
  $b = array( 'mrgreen','razz','sad','smile','redface','biggrin','surprised','confused','cool','lol','mad','twisted','rolleyes','wink','idea','arrow','neutral','cry','question','evil','eek','exclaim' );
  for( $i=0;$i<22;$i++ ){
    echo '<a title="'.$a[$i].'"  href="javascript:grin('."' :".$a[$i].": '".')" ><img src="'.get_bloginfo('template_directory').'/img/smilies/icon_'.$b[$i].'.gif" /></a>';
  }
}

注意:输出的表情代码两旁是有空格的,也就是两个冒号左右各边都有空格,否则表情不显示。其中的inlo_smilies()函数就是输出表情用的,可以将它放入表情盒子。

点击显示/隐藏按钮和表情盒子

打开comments.php,添加一个表情显示/隐藏的点击按钮和表情盒子,一般放在textarea附近。html代码如下:

<a class="comt-addsmilies" href="javascript:;">表情</a>
<div class="comt-smilies"><?php inlo_smilies() ?></div>

其中comt-smilies就是表情盒子的class,注意先要用CSS控制它display:none,这里就不写了。然后用js控制它显示。

JS控制

用js控制显示/隐藏。还有表情a表情的点击事件(点击单个表情让它的代码显示在textarea区),看注释就明白了:

// 点击显示表情
$('body').on('click','.comt-addsmilies',
function(){
    $('.comt-smilies').toggle();
});
// 点击评论textarea区后隐藏表情盒子
$('body').on('click','textarea',
function(){
    $('.comt-smilies').hide();
});
// 点击表情在评论区插入表情代码
$('body').on('click','.comt-smilies a',
function() {
    var ab = $(this).attr('href');// 抓取href内的值
    var abc = ab.split('\'');// 按符号/来分割字符串为几个数组  
    var content = $('#comment').val(); // textarea区的id
    content += abc[1];
    $('#comment').val(content); // textarea区的id
});
最后说明

其实JS只需要控制表情盒子显示/隐藏即可,不用控制点击单个表情插入代码的,因为上面的inlo_smilies()函数里面的a标签的href值已经控制好了,但不知道为什么我用INLOUB主题点不出表情代码来,所以只能用js控制点击事件填入表情代码。
上面整个方法只是普通的添加表情方式,并没有采用load方法载入,所以为了减少表情图片的请求,可以用延迟加载。以上。


下面说说用load方法的步骤
基本和上面差不多,只不过load方法是用js控制将一个php文件插入到表情盒子的div里面所以上面的html代码中的<div id="biaoqing"></div>之间先不用插入inlo_smilies()函数。另外新建一个smiley.php文件执行它,该文件的代码如下:

<?php 
//输出评论表情函数
function inlo_smilies(){
  $a = array( 'mrgreen','razz','sad','smile','oops','grin','eek','???','cool','lol','mad','twisted','roll','wink','idea','arrow','neutral','cry','?','evil','shock','!' );
  $b = array( 'mrgreen','razz','sad','smile','redface','biggrin','surprised','confused','cool','lol','mad','twisted','rolleyes','wink','idea','arrow','neutral','cry','question','evil','eek','exclaim' );
  for( $i=0;$i<22;$i++ ){
    echo '<a title="'.$a[$i].'"  href="javascript:grin('."' :".$a[$i].": '".')" ><img src="wp-content/themes/inloub/img/smilies/icon_'.$b[$i].'.gif" /></a>';
  }
}
// 执行该函数
inlo_smilies(); 
?>

要注意的是里面使用的是绝对路径,wp函数也不起作用,这个尚不清楚。写好之后js控制如下(其实可以参考开篇提到的那篇load方法去做就行了)

// 点击显示/隐藏评论表情
$('body').on('click','#comt_smilies',
function() {
    $('#biaoqing').fadeToggle(100).css('display','inline-block');
    $("#biaoqing").load('/wp-content/themes/inloub/bar/smiley.php'); // load方法将smiley.php插入到表情盒子中
});

以上!