七月
28

【多彩的评论】:让评论可以插入图片,更改文字大小、颜色

在上一篇《 为评论框添加文字格式化编辑器 》中我加入了可以方便插入图片的功能,但是很不幸,我后来才发现原来只有登录用户才能插入图片,否则图片就会被过滤掉。

所以,怎样才能让所有用户都能插入图片呢?

其实有两种方法:

一,更改wp-includes目录中的kses.php文件

这个方法来自《wordpress评论中无法插入图片的解决办法》。详细请参考原文。

wordpress评论中可以使用的XHTML标签是可以控制的,wordpress的该部分程序使用的是开源代码kses。

在wordpress的wp-includes目录中有个kses.php的文件。

一般在文件的第22行 或者搜索$allowedtags 找到:
allowedtags = array (
//’a’=> array (‘href’=> array (), ‘title’ => array ()),
//’abbr’ => array (‘title’ => array ()),
//’acronym’ => array (‘title’=> array ()),
‘b’ => array (),
代码说明:
1、上面代码中的//表示该行为注释。
2、建议一个XHTML标签一行,提高代码可看性。
3、注意括号的对应关系。
4、注意逗号的使用。
用法举例:
我需要在评论中支持XHTML标签:
那么,我就在该段代码中加入下面一行:
‘a’=> array (‘href’ => array (),’title’=> array ()),
要在评论中支持插入图片,就加入下面代码:
‘img’=> array (
‘alt’ => array (),
‘align’ => array (),
‘border’ => array (),
‘class’ => array (),
‘height’=> array (),
‘hspace’=> array (),
‘longdesc’=> array (),
‘vspace’ => array (),
‘src’ => array (),
‘width’ => array ()),

上面例子中是去除了img标签的过滤,想让wordpress评论也能显示文字颜色、大小,则可去除对span标签的过滤即可。


二,通过add_filter函数标准格式化评论中自定义标签

这个来自小邪的提醒。

@QiQiBoY
额,要不你就用[img]标签吧 ~
写一个函数在输出显示的时候替换为《img标签 ~

首先我还要啰嗦两句,这个方法会绑架你的评论,因为需要使用[img]、[color]等类似标签,所以一旦你不使用这个方法了,这些你自定义的标签就会暴漏在你的评论里,造成干扰。

方法是在你的function.php里加入以下代码:

function add_comment_tags($content) {
 
    //替换图片
 
    $content = preg_replace('/\[img src=(.*?) alt=(.*?) \/]/e', '"<img src=\"$1\" alt=\"$2\"/>"', $content);
 
    //替换成颜色标记
 
    $content = preg_replace('/\[color=(.*?)\](.*?)(\[\/color)?\]/e', '"<span style=\"color:$1;\">$2</span>"', $content);
 
    //替换成文字大小标记
 
    $content = preg_replace('/\[size=(.*?)\](.*?)(\[\/size)?\]/e', '"<span style=\"font-size:$1;\">$2</span>"', $content);
 
    return $content;
 
}
 
add_filter('comment_text', 'add_comment_tags');
 

在评论里需要用以下标签调用

[color=#000000]加了颜色的文字[/color]
 
[size=12px]改了大小的文字[/size]
 
[img src=http://myimg.jpg alt=描述 /]

 

注意“=”后面没有引号。只要在评论中输入上面的标签样式即可。

其实你也发现了,这种方法也很繁琐,标签难记,最好的办法就是用我 《 为评论框添加文字格式化编辑器 》 一文中讲的通过js编辑器自动添加。

后话:上面的 方法加了以后,评论里会出现自定义的[img][color]等标签,所以如果你在其他地方调用了评论内容,则标签会出现在这些地方,很不美观,所以需要去除。方法是在function.php中再添加一个函数

function filter_comment_tags($content) {
    $content = preg_replace('/\[img src=(.*?) alt=(.*?) \/]/e', '""', $content);
    $content = preg_replace('/\[color=(.*?)\](.*?)(\[\/color)?\]/e', '""', $content);
    $content = preg_replace('/\[size=(.*?)\](.*?)(\[\/size)?\]/e', '""', $content);
    return $content;
}

然后再调用评论的地方用这个函数对数据进行一次过滤,去除[img][color]这些标签。比如,使用带表情的最新评论时,我们会用strip_tags()函数去过滤html标签,你就可以在这个函数里套入filter_comment_tags()函数来先过滤掉[img][color]这些标签。

具体效果可以参见我博客评论部分。

22

本文标签: , , , ,

分享

本文短网址: http://qiqi.boy.im/5q

这篇文章已经有 69 条评论

Comments (63) Trackbacks (6)
You can leave a response or Trackback this entry .
  1. Page -#1

    哈哈 最近你一直在折腾这个框

  2. winy -#2

    我来测试下效果试试还有这个[/size]

  3. winy -#3

    出错了

  4. winy -#4

    winy :出错了?

    不能同时加上两个属性,嗯

  5. QQAS -#5

    够折腾的阿~

  6. zwwooooo -#6

    这个厉害鸟,不过我不喜欢评论里面有图片

  7. 阿邙 -#7

    评论框折腾帝 :smile:

  8. 万戈 -#8

    kiss贴一张我那里的表情试试

  9. Bee君 -#9

    wow~ ⊙o⊙!最近真是WordPress的折腾方法~~哇!太喜欢了~~改造wp!

  10. 流年 -#10

    再看看贴图
    文艺复兴时代的建筑
    原来是使用第二种的啊

  11. A.shun -#11

    伪bbcode。。囧
    不过总的来说第二种方法比较好

  12. Cen -#12

    这效果很酷,要学着改造

  13. 小邪 -#13

    试一下,嘻嘻 ~

  14. mice -#14


    看看你控制图片大小了没

  15. mice -#15

    我勒个去…自己防盗链了…找个地方传图先..

  16. mice -#16

  17. QiQiBoY -#17

    插入音乐测试

  18. Firm -#18

    呵呵,你这边评论框的功能也算是应有尽有了

  19. QiQiBoY -#19

    代码输入测试:
    <blockquote cite="#commentbody-3442">
    <strong><a href="#comment-3442">winy</a> :</strong><p><span style="color: rgb(34, 34, 34);">我来测试下效果</span>再<strong>试试</strong>还有这个[/size]</p>
    </blockquote>

  20. 灰太狼 -#20

    哈哈 。学习了。HOH。支持你。

  1. 又是一些蛋痛的通知……

    [...] 新主題上線後自己和諸位看倌都發現有些瑕疵,最嚴重的是使用評論工具時,除了登入者之外一律都不能正確顯示文字色彩、大小之類的變更,實在是又急又燥。昨晚忽然想起了QiQiBOY的一篇【多彩的評論】:讓評論可以插入圖片,更改文字大小、顏色,這下才恍然大悟呀。立刻依照教學方法為functions.php添加轉換標籤用的函數,現在看應該是沒問題了。各位可測試測試,有問題請在下面敲碗揚聲。 順道在修改期間,我又手癢癢的折騰了一些很無謂但看上去變美觀的功能: [...]

  2. Hello WordPress!

    [...] 2010.07 我又开始折腾了,我折腾了很多,首先是wordpress无限嵌套的完美解决WordPress嵌套回复的层深问题(无限嵌套)<一>,还有如何通过JS自动处理文中的图片宽高,这个方法我一直在用哦:我是如何处理文章中图片的。想知道我评论框的那么多功能从哪里来的么,你看完这些你也能拥有和我评论框一样强大的功能了:评论框的简单计数器(无需改动模板,附带输入字数限制功能),添加引用按钮——轻松打造属于你的WordPress引用回复功能、为评论框添加文字格式化编辑器、【多彩的评论】:让评论可以插入图片,更改文字大小、颜色、让你的评论框自由粘贴代码、修正关于Ajax comments的一个小问题。还有关于如何创建邮件表单页面的创建一个可设置cookie相关信息的内置Email联系表单;如果你也想要知道wordpress不同页面显示不同的评论数以及楼层的显示,那么这篇文章也许会给你帮助wordpress指定页面评论数+支持分页的楼层显示 [...]

  3. 增强 WordPress 评论功能,提高访客体验

    [...] 不过 WordPress 默认是注册用户才能在评论中插入图片,这个就不好玩了。 于是根据这篇:让评论可以插入图片,更改文字大小、颜色,再折腾了下,非登录用户也可以插入图片了。 [...]

  4. Training Software

    Awesomeness…

    We must be gloating for this….

  5. WordPress在评论框添加简单编辑器和去除图片使用限制(PhilNa2)

    [...] Ps:来源于的【多彩的评论】:让评论可以插入图片,更改文字大小、颜色参考: wordpress评论中可以使用的XHTML标签是可以控制的,wordpress的该部分程序使用的是开源代码kses。 [...]

  6. WordPress在评论框添加简单编辑器

    [...] WordPress默认对游客关闭img标签,原文参考。 [...]

Leave a Reply

Hi , say something.

  • :?:
  • :razz:
  • :sad:
  • :evil:
  • :!:
  • :smile:
  • :oops:
  • :grin:
  • :eek:
  • :shock:
  • :???:
  • :cool:
  • :lol:
  • :mad:
  • :twisted:
  • :roll:
  • :wink:
  • :idea:
  • :arrow:
  • :neutral:
  • :cry:
  • :mrgreen: