📜  将产品名称传递给表单字段 cf7 woocommerce - PHP (1)

📅  最后修改于: 2023-12-03 14:53:47.005000             🧑  作者: Mango

将产品名称传递给 CF7 Woocommerce 表单字段 - PHP
介绍

在使用 Contact Form 7 和 WooCommerce 进行电子商务网站开发时,您可能需要将产品名称动态传递给 Contact Form 7 表单字段。这样,您就可以将产品名称包含在用户提交的表单中,以便更好地了解用户的需求。

在下面的代码片段中,我们将展示如何使用 PHP 将产品名称传递给 Contact Form 7 表单字段,并将其与 WooCommerce 集成。此代码将通过添加自定义函数到 WordPress 主题的 functions.php 文件中来实现。

代码实现
<?php
// 添加产品名称字段到 Contact Form 7
add_filter('wpcf7_contact_form_default_pack', 'add_product_name_field');

function add_product_name_field($contact_form) {
    $product_name = get_the_title(); // 获取当前产品的名称(可以根据需要修改)
    
    $additional_fields = [
        'product_name' => $product_name
    ];
    
    $properties = [
        'additional_settings' => 'on_sent_ok: "location.replace(\'https://yourdomain.com/thank-you-page/\');"'
    ];
    
    $form = [
        'product_name' => [
            'label' => '产品名称', // 自定义字段标签
            'type' => 'text', // 字段类型为文本框
            'default' => $product_name, // 在字段中设置默认产品名称
            'readonly' => true // 设置字段为只读
        ]
    ];
    
    $contact_form['form'] = array_merge($additional_fields, $contact_form['form']);
    $contact_form['properties'] = array_merge($properties, $contact_form['properties']);
    $contact_form['form'] = array_merge($form, $contact_form['form']);
    
    return $contact_form;
}

// 在 Contact Form 7 的邮件正文中包含产品名称
add_filter('wpcf7_mail_components', 'add_product_name_to_mail_body');

function add_product_name_to_mail_body($components) {
    $product_name = isset($_POST['product_name']) ? sanitize_text_field($_POST['product_name']) : '';

    if ($product_name) {
        $components['body'] = str_replace('[product_name]', $product_name, $components['body']);
    }

    return $components;
}
?>
解释

上述代码中的 add_product_name_field 函数用于向 Contact Form 7 添加自定义的产品名称字段。该字段将显示为只读文本框,其中包含当前产品的名称,默认情况下将传递至表单。您可以根据需要根据 WooCommerce 产品结构和需求修改该函数中获取产品名称的方法。

add_product_name_field 函数还将通过 additional_settings 属性将 "on_sent_ok" 重定向设置添加到 Contact Form 7 表单。您需要将 https://yourdomain.com/thank-you-page/ 修改为您的自定义感谢页面的 URL。

add_product_name_to_mail_body 函数用于在 Contact Form 7 的邮件正文中包含产品名称。在这个函数中,我们从表单中获取产品名称,并将其替换为邮件正文中的 [product_name] 占位符。

请将代码片段中的 yourdomain.com 替换为您自己的域名。

结论

通过将产品名称传递给 CF7 Woocommerce 表单字段,您可以更好地了解用户提交表单的产品背景和需求。这对于电子商务网站和产品询价等场景非常有用。记得在 WordPress 主题的 functions.php 文件中添加上述代码,并根据您的需求和网站结构进行适当的修改。