Gravity Forms通知条件逻辑如何调用Gravity Count短代码动态值
结论
Gravity Forms 通知的自定义条件逻辑值字段默认不解析短代码,直接填入[gravitywp_count]会被识别为普通文本,无法获取动态统计值,需要通过少量自定义代码实现需求,现有Gravity Count插件的配置不需要改动。
推荐实现方案(统计口径和现有短代码完全一致)
直接复用Gravity Count内置的统计逻辑,避免重复写数据库查询造成数值偏差,步骤如下:
- 添加可复用的库存统计函数到主题
functions.php文件或者自定义代码片段插件中:
// 调用Gravity Count内置逻辑获取对应SKU的库存统计值 function gf_get_sku_stock($sku = 'SAMSUNGGALAXYS22') { // return=true参数让短代码直接返回统计值不输出,参数和你现有短代码完全匹配 $count = do_shortcode("[gravitywp_count formid='4' filter_field2='162' filter_value2='{$sku}' filter_field='133' filter_value='1' return='true']"); return intval($count); }
- 选择以下任意一种方式接入通知判断逻辑:
- 方式一(适配Custom Conditional Logic for Notifications插件):通过插件提供的钩子将动态统计值注入条件逻辑判断池,配置规则时直接选中该自定义值,设置「小于10」的触发规则即可:
add_filter('gform_notification_logic_conditional_value', function($value, $form, $notification, $entry){ if($form['id'] == 4){ // 仅对ID为4的表单生效 $submit_sku = rgar($entry, '162'); // 读取当前提交条目的SKU字段值 $value = gf_get_sku_stock($submit_sku); } return $value; }, 10, 4);- 方式二(原生钩子实现,无需依赖条件逻辑插件配置):直接在通知发送前做库存判断,不满足阈值就拦截通知:
add_filter('gform_notification', function($notification, $form, $entry){ // 替换为你自己的低库存通知ID,避免影响其他通知 if($notification['id'] !== 'your_low_stock_notification_id') return $notification; $submit_sku = rgar($entry, '162'); $stock = gf_get_sku_stock($submit_sku); // 库存≥10时终止通知发送 if($stock >= 10) return false; return $notification; }, 10, 3);
注意点
- 不要尝试直接在条件逻辑的值字段填写短代码,后台条件逻辑组件默认未开启短代码解析,会导致判断完全失效
- 上述代码中的表单ID、字段ID、通知ID可根据实际业务调整,支持多SKU场景,无需为单个SKU单独写规则
- 统计逻辑完全复用现有Gravity Count插件能力,和前端页面展示的计数数值完全同步,不会出现统计口径不一致的问题
内容的提问来源于stack exchange,提问作者Ercan ATAY
相关产品推荐
相关产品推荐

