使用动态字段预填充数据库中的 CF7 数据

Prefill CF7 data from the database using a dynamic field

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

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

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

这是到目前为止我能够在用户选择 PayPal 时填充动态和隐藏字段 [dynamichidden paid ""] 但没有取得太大成功的代码:

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;
    }
};

最终我设法让它按我想要的方式工作,但是使用“联系表单 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;
};