非插件调用 WordPress 表情

今天又在 Google Reader 上掏到了好东东,看到盒子写了一篇《17行代码为 wordpress 添加评论表情列表》,我马上联想到现在正在用的 Willin 大师的非插件调用 WordPress 表情符的方法,两者实现的效果都是一样的,就是抛弃插件,用代码来实现 WordPress 自带的表情。我比较了一下,盒子的方法居然更精简,效率更高,马上应用到了自己的主题上,并转载方法如下:

将以下代码复制到 comments.php 中合适的位置:

<!--smilies-->       
<?php
function wp_smilies() {
    global $wpsmiliestrans;
    if ( !get_option('use_smilies') or (empty($wpsmiliestrans))) return;
    $smilies = array_unique($wpsmiliestrans);
    $link='';
    foreach ($smilies as $key => $smile) {
        $file = get_bloginfo('wpurl').'/wp-includes/images/smilies/'.$smile;
        $value = " ".$key." ";
        $img = "<img src=\"{$file}\" alt=\"{$smile}\" />";
        $imglink = htmlspecialchars($img);
        $link .= "<a href=\"#commentform\" title=\"{$smile}\" onclick=\"document.getElementById('comment').value += '{$value}'\">{$img}</a>&nbsp;";
    }
    echo '<div class="wp_smilies">'.$link.'</div>';
}
?>
<?php wp_smilies();?>
<!--smilies-->

当然,为了便于管理,你也可以把函数部分放在 functions.php 里,然后在 comments.php 里用<?php wp_smilies(); ?> 来调用。

这里,还要感谢 ThinkAgain 大虾,以上代码提取自他的 wp-smilies 插件。

  1. Pingback: wordpress笔记之评论表情 | 闻心阁

  2. Pingback: wordpress笔记之评论表情 | i 水手

  3. Pingback: 装好WP后做的一些事 | LiChao's blog

  4. 这样做的话得能体现出它的价值啊,从执行效率上讲,插件和这段代码应该相差无几,所以单独拿出来集成在主题里似乎也没有太大的必要——纯属个人意见。

  5. 我在自己那留言老是404,不确定是不是自己网络原因。所以,来您这实验下,有劳等下删掉这些留言吧,哈哈!
    开始灌水啦!

    • 非插件实现ajax评论的话要看你的主题是否符合2.7+主题函数的标准,你可以参考这篇文章:http://willin.heliohost.org/?p=1279
      评论信息是用Comment Info Detector插件
      最新日志的函数可以看这篇文章:http://zww.me/archives/24671

  6. 這我想過, 是用動態替代靜態, 會減緩了速度, 而且有個 bug, 只會在文字 '尾巴' 添加, 把鼠標放中間插入, 卻都是加在後頭... 改的話又回到 '迷你版' 了.

  7. 我觉得winlin的方法较好,首先这两个方法生成的html文档代码量大小差不多,并不会说哪个方法会减少浏览器解析时的工作量,但是盒子的方法是要用PHP循环输出为html,相较来说要耗费少量的服务器资源,而winlin的方法直接就是以浏览器可正常解析的html代码。
    还有,盒子的方法当点击表情后不会自动聚焦到文本框,必须手动再点击一下文本框方可继续输入文字,而winlin的方法则再每次点击表情后自动聚焦到文本框。

  8. 我发现我近来来得挺早的。
    我想启用这个 :oops: 也准备转载你这篇东西。
    到头来我转载你的,你转载盒子的,盒子……

  9. 思想汇报写得想死。回来一看果然又更新了 :roll: 向勤劳的万戈学长致敬,并且对表情排列变更表示情绪不稳影响很大 :x