【问题标题】:Prefill CF7 data from the database using a dynamic field使用动态字段从数据库中预填充 CF7 数据
【发布时间】:2021-06-25 00:14:13
【问题描述】:

我正在尝试创建一种方法,通过该方法我可以从联系表格 7 保存的联系人数据库中检索数据,并在用户之前从下拉菜单中选择 PayPal 付款后预先填写字段方法并填写表格,而无需进行实际付款。

接下来的流程是这样的: 如果用户选择使用 PayPal 付款并填写了整个表单,“已付款”项目将为 0,并且不会重定向到 PayPal 页面 然后,当用户返回事件卡时,我们会显示之前填写的所有字段和“paypal”按钮,完成paypal支付。所以“付费”项目将是 1。

到目前为止,我已经使用以下插件来保存已完成的表单 Advanced CF7 DB 和 Contact Form CFDB7 的数据。 使用其中一个或其他人与我的目标无关

到目前为止,当用户选择 PayPal 但没有太多成功时,我可以使用以下代码填充动态和隐藏字段 [dynamichiddenpaid ""]:

add_action('wpcf7_posted_data', 'course_registration_actions_paypal', 10, 1);
function course_registration_actions_paypal($stato0){
$paypal["paymentmethod"] = '0';
$stato0[“paid”] = '0';
$stato1[“paid”] = '1';

    if (isset($paypal[“paymentmethod]) && $stato0[“paid”] === '0') {
        return $stato0;
    } else {
        return $stato1;
    }
};

【问题讨论】:

  • 罗布。令人困惑的是这应该如何工作。数据从何而来。你需要更多细节。同样最重要的是,wpcf7_posted_data 是一个过滤器,而不是一个动作挂钩。
  • 我有一个用于活动的 CF7 表单,有两种付款方式:PayPal 或银行转账。问题是,当用户通过选择 PayPal 填写表单时,他必须向我显示一条注册消息,而无需重定向到 PayPal 以立即付款,因为用户可以在以后决定这样做。实际上,在这种罕见的情况下,如果用户返回相同的事件,他应该会发现表单已经预先填写了所有输入的字段和“支付”按钮。 “wpcf7_posted_data”过滤器用于动态填充“已付款”字段,其中 0 = 等待付款,1 = 已付款。
  • 您在问题中对此进行了解释。我如何能够用您在问题中发布的内容重新创建它?我不明白你是如何从 A 到 B。

标签: php wordpress dynamic paypal contact-form-7


【解决方案1】:

最终我设法让它按我的意愿工作,但使用“联系表格 7 的重定向”插件仍然存在重定向问题。

总是在第一个案例(paypal)上重定向而不是区分。

我认为问题在于“wpcf7_posted_data”,因为没有重定向它们可以正常工作。

这是我的代码:

add_action('wpcf7_posted_data','course_registration_actions_persist_payment_status', 10, 1);
function course_registration_actions_persist_payment_status($record){
$current_user = wp_get_current_user();
$userId = get_field('id__pro', 'user_' . $current_user->ID);
$eventId = get_field('id', false);

$records = WPCF7_ContactForm::find([
    'ID-Course' => $eventId, // 2
    'ID-User' => $userId, // 82994
]);

if ($record['paymentmethod'][0] == 0) {
    // Paypal
    $record['paymentmethod'] = 0;
    // No Paid
    $record['paid'] = 0;
} else {
    // Bank
    $record['paymentmethod'] = 1;
    // Paid
    $record['paid'] = 1;
}

return $record;
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 2022-07-30
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    相关资源
    最近更新 更多