如何让自定义字段支持WordPress/WooCommerce默认编辑器的所有标准标签?
解决方案
要让自定义编辑器的HTML过滤规则和WordPress/WooCommerce默认编辑器完全一致,无需手动逐个添加标签,同时保证安全性,可以直接使用WordPress内置的标签集合替代单独调用wp_kses_post。
修改后的代码
将原来的保存代码替换为:
update_post_meta( $post_id, '_cost_performance', wp_kses( $_POST['_cost_performance'], wp_kses_allowed_html( 'post' ) ) );
原理说明
wp_kses_allowed_html('post')会返回WordPress默认文章编辑器允许的所有标准HTML标签及对应属性的数组,其中包含<br>、 、<strong>等你需要的标签。wp_kses函数会基于这个数组对内容过滤,自动移除不安全的标签和属性,既满足标准标签的支持需求,又能保证内容安全。
关于wp_kses_post的补充
wp_kses_post本质是wp_kses($data, wp_kses_allowed_html('post'))的封装,但如果站点有其他代码通过过滤器修改了默认的post标签规则,可能导致过滤结果不符合预期。直接调用wp_kses并传入wp_kses_allowed_html('post'),能确保过滤规则和默认编辑器完全一致。
为什么不适用esc_html
esc_html会转义所有HTML字符,导致标签以纯文本形式输出,无法在前端渲染,因此不符合保留合法HTML并生效的需求。
内容的提问来源于stack exchange,提问作者Adam Luper
相关产品推荐
相关产品推荐

