WordPress使用SiteOrigin插件搭建联系表单的功能实现及相关问题咨询

1. 如何通过SiteOrigin插件获取表单提交的数值
SiteOrigin表单提交后会触发siteorigin_widgets_form_submit动作钩子,可直接通过该钩子获取提交的所有字段值,代码可以挂载到当前主题的functions.php文件中:
add_action( 'siteorigin_widgets_form_submit', function( $form, $values, $widget ) { // $values 为用户提交的所有表单字段数组,键为后台设置的字段名,值为用户输入内容 // 例:后台设置了name字段,可通过 $values['name'] 读取对应输入值 }, 10, 3 );
如果是临时调试,也可以直接通过$_POST全局变量读取,SiteOrigin表单提交的字段默认前缀为so_form,读取前需要做好安全校验。
2. 将用户数据发送给管理员的邮件发送流程是怎样的
默认邮件发送流程如下:
- 用户点击提交按钮后,前端先做基础字段校验(必填项校验、格式校验等)
- 校验通过后,表单数据通过POST/AJAX请求提交到站点后端
- SiteOrigin后端接收数据后做二次安全校验,过滤恶意内容
- 校验无误后调用WordPress核心
wp_mail()函数发送邮件,默认收件人为后台「设置-常规」中配置的管理员邮箱,邮件内容自动拼接所有表单字段的键值对 - 发送完成后返回前端提交成功提示,发送失败则返回对应错误信息
你也可以直接在表单的后台设置页自定义收件人、邮件标题、内容模板,无需修改代码。
3. 如何获取并存储这些表单提交的数值
SiteOrigin表单默认不会自动存储提交数据到数据库,如需存储可以选择两种方式:
- 插件扩展:安装SiteOrigin官方的表单数据存储扩展,或兼容SiteOrigin的第三方WP表单数据存储插件
- 自定义代码:使用上文提到的
siteorigin_widgets_form_submit钩子,拿到提交的$values数组后,经过安全过滤写入WordPress自定义数据表,或者通过add_post_meta存储到自定义文章类型中
如果仅用于调试,可以在钩子函数中使用error_log( print_r( $values, true ) );把提交数据写入站点日志文件查看。
4. SiteOrigin插件的所有文件和数据的存储位置是什么
- 插件文件:默认存放在站点根目录
wp-content/plugins/siteorigin-widgets/路径下,如果安装的是SiteOrigin Page Builder,对应路径为wp-content/plugins/siteorigin-panels/ - 插件配置数据:全局设置、表单配置参数都存储在WordPress数据库的
wp_options表中,键名以siteorigin_widgets_或siteorigin_panels_为前缀 - 自定义表单内容:跟着嵌入的页面/文章存储在
wp_posts表对应内容的post_content字段中。
5. 如果我想要编辑或新增相关功能,需要在哪个模板文件中进行修改
不建议直接修改插件源文件,插件更新会覆盖所有自定义修改,推荐按需求选择修改方式:
- 仅修改表单前端样式:直接在当前主题的
style.css文件中添加自定义CSS即可 - 修改提交逻辑、邮件逻辑、新增数据存储等功能:所有自定义代码写入当前主题的
functions.php文件,或者单独创建自定义插件挂载功能 - 需要自定义表单渲染模板:把SiteOrigin的表单模板文件复制到当前主题根目录的
siteorigin-widgets/文件夹下,在副本中修改即可,插件会优先加载主题目录下的模板文件,不会被插件更新覆盖。
内容的提问来源于stack exchange,提问作者Shubham Kasar
相关产品推荐
相关产品推荐

