Escape HTML on WP input

时间:2014-09-27 作者:Gareth Gillman

我对创建一个小部件有点执着,它有一个输入(有点像默认的文本小部件),但在添加html时遇到了一个问题。

我的代码是:

$instance[\'content\'] = ( ! empty( $new_instance[\'content\'] ) ) ? esc_html( $new_instance[\'content\'] ) : \'\';
这可以部分工作,因为它让我保存HTML(iframe),但在前端显示为代码,我需要它将iframe代码转换为工作视频。

我也尝试过:

$instance[\'content\'] = ( ! empty( $new_instance[\'content\'] ) ) ? strip_tags( $new_instance[\'content\'] ) : \'\';
但它不允许我保存iframe内容(它会清除框)。

我需要使用哪个函数,以便我的小部件的行为与默认文本小部件相同。

1 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

默认文本小部件-WP_Widget_Text - 可在中找到wp-includes/default-widgets.php. 输入的处理方式如下:

  • stripslashes( wp_filter_post_kses( addslashes( $text ) ) ); 对于文本
我想这应该也适用于您的自定义小部件。此外,还有:

  • wpautop( $text ) 在输出上,如果过滤器设置为这样做
但最理想的情况是您自己查看源代码。

此外,法典条款:

给你一个很好的关于WP消毒、逃逸和验证可能性的概述。

结束

相关推荐

Multiple widgets in wordpress

我已经创建了一个wordpress小部件。它在小部件选项中有一个下拉列表。下拉列表包含“facebook”和“twitter”。如果管理员选择“twitter”,那么twitter关注者计数将显示在小部件中,与facebook的情况类似。使用jquery,该计数显示在id为“social count”的div中。当页面加载时,jquery ajax将获取计数并将其插入到“社交计数”中。问题是它在单个实例中运行良好。但是,如果在侧栏中添加了2个实例,则在这两个实例中都会显示最新的计数,因为我使用的是$(“.