WordPress 技巧:为评论模块增加更多 HTML 标签支持
WordPress 原生的评论模块内容,支持使用 HTML 标签来增强评论内容的格式和效果。但是这肯定会带来一些安全隐患,特别是评论这种随便一个浏览者都可以提交数据的地方,容易产生跨站攻击(XSS),所以 WordPress 系统严格的限制了评论模块可以使用的 HTML 标签。默认的情况下,只支持:a、abbr、acronym、b、blockquote、cite、code、del、em、i、q、strike、strong 这几个标签和对应的相关属性。
这些标签肯定是远远不够用的,如果是技术博客,评论往往需要包含代码,那么可能就需要添加 pre 标签的支持,如果想要评论中可以引用图片,那么需要 img 标签的支持。本文就是来讲解如何在评论模块中增加更多 HTML 标签的支持。
WordPress 允许的标签和属性
WordPress 出于安全考虑,严格的限制了文章和评论等可编辑内容支持的 HTML 标签类型和标签的属性。具体的内容可以看:wp-includes/kses.php 这个文件,里面有两个全局数组变量 allowedposttags 和 allowedtags ,这两个数组变量就包含了允许的 HTML 标签,每个标签的键值又是一个数组,记录了这个标签常用的属性。例如:
$allowedtags = array(
'a' => array(
'href' => true,
'title' => true,
));
上面这个数组的含义就是支持 a 标签以及对应的 href、title 属性。
让 WordPress 评论支持更多标签的方法
思路很简单,先按照上面的格式,声明一个标签信息数组,然后 hook 勾到 WordPress 上面。例如想要增加 pre 标签的支持,先声明下面数组:
function allowedtags_pre() {
global $allowedtags;
$allowedtags['pre'] = array('class'=>true,);
}
这个函数的意思就是:先声明一下 $allowedtags 这个全局变量,然后下面就可以为这个全局变量增加一个新键值 pre,由于 pre 标签可能需要增加 class 属性,所以我们同时增加它的 pre 标签支持。下面 hook 一下,add_action 到 comment_post 就可以把刚刚修改的内容关联进 WordPress 了:
add_action('comment_post', 'allowedtags_pre');
这样,就相当于为 $allowedtags 新增加了 pre,把这两段代码放进主题目录下的 functions.php 文件中或者写成插件,然后就可以实现了。
相关文章
- wordpress优化经历(五)——添加微语说说模块
- 使用标准信号检测 VM振弦采集模块测量精度(一)
- 基于51单片机+LD3320语音模块+SYN6288语音合成——语音识别智能分类垃圾桶「建议收藏」
- SAP Commerce Cloud ASM 模块的登录过程
- wordpress美化登录界面Wordpress博客 2 年前 桃李Taoli
- 振弦采集模块(智能振弦传感器测量模块)其它常见问题
- Python语法之模块和包
- 小站工具|求解课题万能公式“A基因通过B通路调控C疾病的D功能”与模块使用教程~
- 两个HC05蓝牙模块相互之间的通信
- 校园论坛(Java)—— 用户管理系统模块
- Python基础语法-内置函数和模块-math模块
- nodejs中的方法和模块的使用详解编程语言
- 搭建wordpress如何在Linux中安装WordPress网站(如何用linux)
- 使用Rubyre模块创建复杂的正则表达式