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

WordPress wp_mail函数分步表单点击下一步仅第二次触发问题求助

代码调整方案

问题根因

  1. 前端未将当前步骤参数传给后端,且全局共用的计数变量i逻辑不稳定,容易出现步骤计数错位;
  2. 后端查询表单数据无过滤条件,默认取全表第一条记录的步骤值,无法匹配当前用户当前表单的最新步骤,且邮件触发时机可能早于步骤数据更新到数据库的时间,导致一直读取到上一步的状态。

前端代码调整

首先给每个下一步按钮添加自定义属性data-step,对应步骤值1/2/3,示例:

<!-- 第一步按钮 -->
<button class="btn-next" data-step="1">下一步</button>
<!-- 第二步按钮 -->
<button class="btn-next" data-step="2">下一步</button>
<!-- 第三步按钮 -->
<button class="btn-next" data-step="3">下一步</button>

修改JS代码,点击时直接取按钮自带的步骤值传给后端:

let ajaxurl = 'admin-ajax.php';
jQuery(".btn-next").on("click", function(){
    const currentStep = jQuery(this).data('step');
    console.log(`第${currentStep}步按钮点击`);
    jQuery.post(ajaxurl, {
        action: 'send_mail',
        step: currentStep
    }); 
});

后端代码调整

接收前端传的步骤参数,添加数据库查询过滤条件,补充WordPress AJAX请求必填的结束逻辑:

function send_mail() {
    global $wpdb;
    // 接收并校验前端传的步骤参数
    $current_step = isset($_POST['step']) ? intval($_POST['step']) : 0;
    if($current_step <= 0) {
        wp_die();
    }
    // 替换为你实际的查询条件,比如当前表单记录ID、当前登录用户ID等,不能直接查全表
    $current_form_id = 1; 
    $results = $wpdb->get_results( $wpdb->prepare("SELECT * FROM my_table WHERE id = %d", $current_form_id) ); 

    if(!empty($results)){
        // 可选校验:确保前端传的步骤和数据库最新更新的步骤一致,防止恶意请求
        $step_complete = intval($results[0]->step_completed);
        if($current_step !== $step_complete) {
            wp_die();
        }
        // 按步骤发对应邮件
        if($current_step == 1){
            wp_mail('test@mail.com', '第一步骤完成', '第一步骤已完成');          
        } elseif($current_step == 2){
            wp_mail('test@mail.com', '第二步骤完成', '第二步骤已完成');                
        } elseif($current_step == 3) {
            wp_mail('test@mail.com', '第三步骤完成', '第三步骤已完成');  
        }
    }
    wp_die(); // WordPress AJAX请求必须加该函数结束执行
}
add_action('wp_ajax_send_mail', 'send_mail');
add_action('wp_ajax_nopriv_send_mail', 'send_mail');

补充注意事项

确保邮件发送请求的触发时机,在当前步骤的数据已经成功更新到数据库之后再调用,避免出现步骤校验不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 14:54:06