首页 > 解决方案 > 防止 Gravity Forms 在给定条件下发送 Webhook

问题描述

我正在尝试将过滤器应用于 Gravity Form 的 Webhook 插件,但我无法理解它。我在下面创建了一个函数,从我读到的内容应该可以防止 Webhook 提要在提交时发送表单,但它只是不起作用。

我确定我遗漏了一些东西,但我可以使用第二双眼睛和一些专业知识。下面是一个单元测试,用于禁用表单 8 上的任何 web hook,然后我将扩展以在特定条件下激活。

// Gravity Forms Webhook Filter
add_filter( 'form_gravityformswebhooks_pre_process_feeds_8', 'disable_webhook_by_field');
function disable_webhook_by_field( $feed, $entry, $form )
{
    $feed['is_active'] = false;
    return $feed;
}

标签: phpwordpressfilterwebhooksgravity-forms-plugin

解决方案


在退后一步,然后再次阅读文档后,我完全忽略了它不是一个提要,而是传递给表单的一系列提要,因此我必须遍历并检查每个提要。

下面是我的最后一个函数,它将提交的表单名称字段传递给一个函数,并在名称无法识别时禁用 Webhook。

希望这对某人有用。

// Gravity Forms Webhook Name Filter
add_filter( 'form_gravityformswebhooks_pre_process_feeds_8', 'disable_webhook_by_name');
function disable_webhook_by_name( $feeds, $entry, $form )
{
    $firstname = rgar( $entry, '1.3' );
    $lastname = rgar( $entry, '1.6' );

    // Checks user name against database and disables Webhook is not found
    foreach ( $feeds as & $feed )
    {
        if ( ! checkName( $firstname, $lastname ) )
        {
            $feed = rgar( $feed, 'is_active', false );
        }
    }
   
    return $feeds;

}

推荐阅读