如何在WordPress的Formidable表单输入框中保留HTML标签
解决Formidable表单输入框保留HTML标签的问题
核心原因
Formidable表单的短码value参数默认会过滤HTML内容,同时如果字段未开启允许HTML的设置,也会自动移除标签。
解决方案
1. 确保字段允许HTML
打开Formidable表单编辑界面,找到对应的输入字段:
- 若使用**文本区域(Textarea)**字段:在字段的「高级」设置中,勾选「允许HTML」选项。
- 若使用单行文本框:建议切换为文本区域,单行文本框通常强制过滤HTML,无法保留标签。
2. 用钩子函数设置字段值(推荐)
不要通过短码的value参数直接传递HTML,改用Formidable的钩子绕过短码过滤。在主题的functions.php文件中添加以下代码:
add_filter('frm_setup_new_fields_vars', 'custom_set_form_html_value', 10, 2); function custom_set_form_html_value($values, $form) { // 替换为你的表单ID if ($form->id != 4) { return $values; } // 替换为你需要传入的带HTML标签的字符串 $html_content = '<p>john doe</p><p>123 ave st.</p><p>history of john...</p>'; // 替换为目标字段的ID(可在表单字段编辑页查看) $target_field_id = 'field_123'; $values[$target_field_id] = $html_content; return $values; }
然后修改短码调用,无需再传value参数:
<div>[formidable id="4"]</div>
3. 若坚持使用短码value参数
对HTML内容进行双重转义后传入:
// 原始HTML内容 $html_content = '<p>john doe</p><p>123 ave st.</p><p>history of john...</p>'; // 双重转义 $double_escaped_value = htmlspecialchars(htmlspecialchars($html_content));
调用短码:
<div>[formidable id="4" value="<?php echo $double_escaped_value; ?>"]</div>
注:这种方法可靠性低于钩子方式,Formidable过滤规则更新可能导致失效。
内容的提问来源于stack exchange,提问作者bluePearl
相关产品推荐
相关产品推荐

