wordpress已经默认过滤了非管理员评论的很多标签,只保留文本。对于允许的标签,所有人评论显示时都是被浏览器解释过的正常html内容;对于不允许的标签,管理员评论仍然显示正常,非管理员评论存储时就已被去掉那些标签(只保留文本)。下面想做的是在评论显示时将所有人评论转义为HTML实体,这并不改变评论实际存储在数据库中的内容。对于管理员所有标签被转义为HTML实体;对于非管理员本来该被吞掉的标签依然被吞,本来允许的标签被转义为HTML实体。
在主题functions.php文件中,加入以下代码即可:
function html_escape_entities($comment){ $comment = htmlspecialchars($comment,ENT_QUOTES); return $comment; } add_filter('comment_text','html_escape_entities');
其中ENT_QUOTES参数是指:转义双引号与单引号
后面那个参数其它常用的还有:
ENT_COMPAT (默认)只转义双引号
ENT_NOQUOTES 双引号与单引号都不转义