You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elementor Pro表单:指定字段为空时跳过MailerLite动作

Elementor Pro Forms 跳过MailerLite动作解决方案

需求说明

使用Elementor Pro Forms搭建了集成MailerLite的表单,配置了「收集提交内容」和「MailerLite」两个提交动作。需要实现:当ID为emailval的字段值为空时,仅执行「收集提交内容」动作,跳过MailerLite的订阅动作。

现有代码

add_action( 'elementor_pro/forms/validation', function ( $record, $ajax_handler ) {
  $form_name = $record->get_form_settings( 'form_name' );

  if ( 'my_el_form' !== $form_name ) {
    return;
  }

  $fields = $record->get_field( [
    'id' => 'emailval',
  ]);

  if ( empty( $fields ) ) {
    return;
  }

  $field = current( $fields );

  if ( '' ===  $field['value']  ) {
    //if value is empty skip mailerlite and send form
  }
}, 10, 2 );

解决方案

要实现跳过特定动作,需要在表单验证完成后、动作执行前移除MailerLite的动作回调。将钩子从elementor_pro/forms/validation切换为elementor_pro/forms/after_validation,并在字段值为空时移除对应动作:

add_action( 'elementor_pro/forms/after_validation', function( $record, $ajax_handler ) {
    $form_name = $record->get_form_settings( 'form_name' );
    
    // 仅针对目标表单执行逻辑
    if ( 'my_el_form' !== $form_name ) {
        return;
    }

    $fields = $record->get_field( [ 'id' => 'emailval' ] );
    if ( empty( $fields ) ) {
        return;
    }

    $field = current( $fields );
    // 当emailval字段为空时,移除MailerLite动作
    if ( '' === trim( $field['value'] ) ) {
        remove_action( 'elementor_pro/forms/action/run', [ ElementorPro\Modules\Forms\Integrations\MailerLite\MailerLite::instance(), 'action_mailerlite' ], 10 );
    }
}, 20, 2 );

关键说明

  • 使用after_validation钩子:该钩子触发于表单验证通过后、提交动作执行前,是修改动作列表的合适时机
  • 移除动作回调:通过remove_action精准移除MailerLite的动作处理函数,确保仅跳过该动作,保留「收集提交内容」的默认行为
  • 优先级设置:将当前钩子的优先级设为20(高于默认的10),保证在MailerLite动作执行前完成移除操作

内容的提问来源于stack exchange,提问作者Matredok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:27:16