热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在html中添加评论,让评论模块支持更多HTML标签

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 文件中或者写成插件,然后就可以实现了。

作者:潜行者m

来源:我爱水煮鱼



推荐阅读
  • php生成shtml类用法的简单介绍
    本文目录一览:1、phpcmsv9怎么生成shtml ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 一、概述nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的 ... [详细]
  • 本文转载自:https:blog.csdn.netu924512005articledetails70655272详细了解FPGAselectIO是学习FPGA基础 ... [详细]
  • 通过存储型XSS漏洞获取目标用户本地私钥信息
    运维|安全存储型XSS漏洞,目标用户,本地,私钥信息运维-安全舍得网源码,vscode代码检查工具,ubuntu壁纸修改,tomcat网页部署项目,爬虫枯木,php采集文件,马鞍山 ... [详细]
  • 最近流行的一些木马群的查杀方法
    (发在卡卡的一个帖子转到这里来,方便大 ... [详细]
  • |Questions|Answers|-------------|----------------------------------------- ... [详细]
  • php自动部署笔记,php自动化部署工具
    本文目录一览:1、码云gitee利用PHP脚本拉取实现自动部署(可用于生产环境) ... [详细]
  • linux内核网络钩子函数使用,Linux内核IOCTL网络控制框架实现实例分析
    4.6、inet_ioctl函数由于inet_ioctl函数内容分支很多,但功能、处理不难理解,所以我把一些不常见的内容都省去,挑简单重要的说,完全在于抛砖引玉:staticint ... [详细]
author-avatar
rwp4677210
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有