framecreative / gravityforms-form-integrator
Requires
- composer/installers: ~1.0
README
这是Gravity Forms WordPress插件的扩展。
此扩展提供了一个管理界面,允许用户创建“数据源”,将从重力表单提交异步提交到第三方URL的数据。
它通过将数据作为url编码的表单请求POST来“模拟”表单提交。管理界面还提供了一个部分,可以在此处提供键/值数据,以与请求一起发送 - 这是为了模拟在隐藏字段中包含数据,这对于Salesforce等服务非常常见。这些值也不会暴露给前端用户,这也是一个额外的优势。
通过有多个数据源,每个数据源都可以有自己的设置、发送值的选项,一个重力表单提交可以发送到多个外部服务。
安装
手动WordPress插件安装
注意:您将通过此方法安装时不会收到任何更新
通过Github Updater安装WordPress
- 此插件具有正确的头信息,可以通过Andy Fragen的奇妙Github Updater插件进行安装
- 按照Github Updater说明进行安装
- 当发布新标记版本时,Github Updater插件将允许您通过正常过程在wp-admin中升级
Composer安装🎉
- 此插件通过Packagist发布,并设置了“wordpress-plugin”类型,以便通过composer/installers安装
composer require framecreative/gravityforms-form-integrator- 恭喜你,作为一个PHP开发者,没有困在2006年💅
用法
管理界面
创建一个数据源,您将看到主设置页面
条件
- 您可以根据重力表单字段的值来选择是否在特定提交上运行数据源
- 目前每个数据源只支持一个条件字段
动态字段
- 您可以定义任意数量的名称/重力表单字段值组合
- 在文本框中放置参数应发送到外部服务的“名称”
- 使用下拉菜单选择相应的重力表单字段,提交时将发送此字段的值
- 文本框中的名称应与输入的HTML 'name'属性相匹配,如果您正在模拟表单提交
- 所有内容都以URL编码的HTTP POST发送,因此可以与非基于表单的端点通信,这些端点通过查询字符串接受参数
额外数据
- 专为不需要用户输入的'静态'值而设计
- 用于您表单上的任何不需要动态填充(通过查询字符串或js)的'type=hidden'输入
- 这意味着您在集成多个服务时不需要在Gravity Form中添加5-15个额外的隐藏字段
- 在包含敏感数据之前,请确保您正在向一个安全的端点(通过https)发布,请记住,所有内容都是明文发送的
环境 && 启用异步处理
如果定义了常量名称WP_ENV,则插件将表现出一些额外的行为
- 如果定义了
WP_ENV,并且不是live或production,则每个数据源将在提交时将其值输出到屏幕上进行调试(除发送请求外) - 如果定义了
WP_ENV,并且是live或production,则数据源将利用异步处理 - 这大大加快了最终用户体验
为了利用异步数据源处理功能,您必须定义一个WP_ENV常量,其值必须是live或production
管理多个数据源
单个表单可以具有多个数据源,以提交到多个外部服务,或者多个条件数据源等
可以在保持设置完整的情况下禁用数据源 - 如果它们尚未准备好投入生产或数据源是季节性的,则很有用
跨表单复制数据源
目前没有复制/克隆数据源的操作,因此如果您需要配置单个外部服务以在多个表单中使用,可能会有些繁琐
每个数据源的设置都存储在%%您的数据库前缀%%_gf_addon_feed表中的单个行中,复制行并只需更改form_id值以匹配不同的表单就很容易。
数据源设置都是JSON,因此您可以编辑它们,而无需担心PHP序列化数据的问题
筛选器 && 扩展此插件
该插件有两个主要筛选器 - 这些允许您在数据提交到外部服务之前对其进行操作
示例用例:将Gravity Forms复选框或多选字段转换为salesforce可以理解的格式
<?php add_filter('gf_form_integrator_modify_dynamic_field_value', 'myFormIntegratorFilter', 10, 7); // This filter is applied to each dynamic field map pairing before it's added to the array function myFormIntegratorFilter( $fieldValue, $fieldName, $fieldObject, $formIntegratorObject, $gf_feedArray, $gf_entryArray, $gf_formArray ){ // Do Stuff here return $fieldValue; }; // Even though filters technically shouldn't cause side effects, you can add additional items to the array via // $formIntegratorObject->_postDataValues['my_extra_key'] = 'my_extra_value' // return false to prevent this value from being added to the 'postDataValues' array
还有一个在所有值发送之前调用的筛选器,其中包含要发送的POST请求中的所有数据的数组
<?php add_filter('gf_form_integrator_modify_values_pre_submit', 'myFormIntegratorArrayFilter', 10, 4); // This filter is applied once right before the POST request is made function myFormIntegratorFilter( $arrayOfData, $gf_feedArray, $gf_entryArray, $gf_formArray ){ // Do Stuff here return $arrayOfData; }; // return false to prevent the submission of ALL VALUES to the service (cancel the whole thing) // use with caution, implement logging in your filter if you are going to short circuit things (add a note or something)
提示
使用Gravity Forms进行验证 - 只有对于有效的提交,数据源才会被处理
如果您正在向Pardot提交,请注意您需要为Salesforce web2lead配置一个单独的数据源
Pardot使用一些非常规的JS在提交后传递这些值,因为我们以程序方式发出此请求,因此没有浏览器来运行此JS!
发行说明
- 1.0:初始发布
- 2.0:添加动态字段映射
- 2.1:删除不必要的样板
- 2.2:添加github更新器头
- 2.2.1:通过注释掉记录器来解决记录器类问题
- 2.3.0:更新以改进项目间的使用
- 异步表单处理以加快提交
- 删除一些剩余的样板引用
- 在数据源激活中添加简单的(单个)条件检查
- 2.3.1:通过筛选器自定义字段值
- 将异步更改为仅在生产中使用,以便更容易使用xdebug进行调试
- 添加筛选器以允许值更改,为通过salesforce进行适当的多列表操作铺平道路
- 2.3.2:允许筛选器通过对象实例操作所有postData值
- 2.3.3:修复复选框值的错误
- 2.3.4:在最终值提交之前添加额外的筛选器以增加灵活性
- 2.3.5:通过筛选器启用整个请求的禁用,以进行更复杂的条件