framecreative / gravityforms-form-integrator

本包的最新版本(2.3.5)没有可用的许可信息。

2.3.5 2017-07-06 03:13 UTC

This package is auto-updated.

Last update: 2024-09-20 10:22:38 UTC


README

这是Gravity Forms WordPress插件的扩展。

此扩展提供了一个管理界面,允许用户创建“数据源”,将从重力表单提交异步提交到第三方URL的数据。

它通过将数据作为url编码的表单请求POST来“模拟”表单提交。管理界面还提供了一个部分,可以在此处提供键/值数据,以与请求一起发送 - 这是为了模拟在隐藏字段中包含数据,这对于Salesforce等服务非常常见。这些值也不会暴露给前端用户,这也是一个额外的优势。

通过有多个数据源,每个数据源都可以有自己的设置、发送值的选项,一个重力表单提交可以发送到多个外部服务。

安装

手动WordPress插件安装

  • 确保在您的WordPress站点上安装并启用了重力表单
  • 下载最新版本作为zip文件
  • 使用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年💅

用法

管理界面

激活后,设置菜单中会出现一个名为“表单集成器”的新条目 GF设置菜单中的新设置项

创建一个数据源,您将看到主设置页面

条件

  • 您可以根据重力表单字段的值来选择是否在特定提交上运行数据源
  • 目前每个数据源只支持一个条件字段

动态字段

  • 您可以定义任意数量的名称/重力表单字段值组合
  • 在文本框中放置参数应发送到外部服务的“名称”
  • 使用下拉菜单选择相应的重力表单字段,提交时将发送此字段的值
  • 文本框中的名称应与输入的HTML 'name'属性相匹配,如果您正在模拟表单提交
  • 所有内容都以URL编码的HTTP POST发送,因此可以与非基于表单的端点通信,这些端点通过查询字符串接受参数

额外数据

  • 专为不需要用户输入的'静态'值而设计
  • 用于您表单上的任何不需要动态填充(通过查询字符串或js)的'type=hidden'输入
  • 这意味着您在集成多个服务时不需要在Gravity Form中添加5-15个额外的隐藏字段
  • 在包含敏感数据之前,请确保您正在向一个安全的端点(通过https)发布,请记住,所有内容都是明文发送的

Main Settings page for form integrator

环境 && 启用异步处理

如果定义了常量名称WP_ENV,则插件将表现出一些额外的行为

  • 如果定义了WP_ENV,并且不是liveproduction,则每个数据源将在提交时将其值输出到屏幕上进行调试(除发送请求外)
  • 如果定义了WP_ENV,并且是liveproduction,则数据源将利用异步处理 - 这大大加快了最终用户体验

为了利用异步数据源处理功能,您必须定义一个WP_ENV常量,其值必须是liveproduction

管理多个数据源

单个表单可以具有多个数据源,以提交到多个外部服务,或者多个条件数据源等

可以在保持设置完整的情况下禁用数据源 - 如果它们尚未准备好投入生产或数据源是季节性的,则很有用

Enable / Disable feeds via the admin

跨表单复制数据源

目前没有复制/克隆数据源的操作,因此如果您需要配置单个外部服务以在多个表单中使用,可能会有些繁琐

每个数据源的设置都存储在%%您的数据库前缀%%_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:通过筛选器启用整个请求的禁用,以进行更复杂的条件