Gravity Forms对接Gravity Flow:工作流取消时修改字段数据问题求助
问题修复方案
核心错误点
- 表单ID判断逻辑错误:代码中直接将数组类型的
$form变量与字符串'14'比较,该判断永远返回假,内部的字段更新逻辑根本不会执行。正确的判断方式是读取表单数组的ID属性进行比对。 - 接口参数传值不规范:
GFAPI::update_entry_field第一个参数要求传入整数类型的条目ID,直接传入$entry数组在部分版本中无法被识别,建议明确传入条目的ID值。 - 缺少边界校验:没有对条目有效性做判断,极端情况下可能出现异常报错。
修正后可运行代码
add_action( 'gravityflow_pre_cancel_workflow', 'sh_gravityflow_pre_cancel_workflow', 10, 3 ); /** * @param array $entry 当前提交条目 * @param array $form 当前提交关联的表单 * @param Gravity_Flow_Step $step 当前工作流步骤 */ function sh_gravityflow_pre_cancel_workflow( $entry, $form, $step ) { // 仅处理ID为14的表单 if ( rgar( $form, 'id' ) != 14 ) { return; } // 仅在条目有效时执行更新 if ( ! is_array( $entry ) || empty( $entry['id'] ) ) { return; } // 更新ID为14的单行文本字段值为Flagged GFAPI::update_entry_field( $entry['id'], 14, 'Flagged' ); }
额外排查方向
如果部署后依然不生效,可以按以下顺序排查:
- 确认代码放在主题的functions.php文件或者自定义插件中,没有语法错误
- 检查对应工作流的取消权限配置,确保取消操作会触发对应钩子
- 确认要更新的字段ID确实为14,没有和步骤ID、表单ID混淆
内容的提问来源于stack exchange,提问作者MourgCodes
相关产品推荐
相关产品推荐

