I’m qiqiboy !

  • Yes,I’m qiqiboy ! And my vision is world peace.
Home
|
Network
|
WordPress 【多彩的评论】:让评论可以插入图片,更改文字大小、颜色

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

| Categories: WordPress

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

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

其实有两种方法:

一,更改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标签的过滤即可。

close


二,通过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

声明: 本站遵循 署名-非商业性使用 3.0 共享协议. 转载请注明转自 I’m qiqiboy !
close

40 Responses to this post.

Comments (40) Trackbacks (0)
You can leave a response or Trackback this entry .
  1. No trackbacks yet.

Leave a Reply

avatar-default
Hi, I know you have something to tell me. Please leave me a reply.

You input 0 characters.