首页 > 解决方案 > WooCommerce 记住结帐字段

问题描述

我有一个页面,我将隐藏的表单字段值发送到 WooCommerce 结帐页面。

$my_form = '<form action="/checkout" method="post">';
$m_form .= '<input type="hidden" name="company" value="<%= company %>" />';
$my_form .= '<input type="hidden" name="address" value="<%= address %>" />';
$my_form .= '<input type="hidden" name="address2" value="<%= address2 %>" />';
$my_form .= '<input type="submit" name="mysubmit" Value="Send to checkout">';
$my_form .= '</form>';

在结帐页面上,我读取了这些值并填充了运输字段。这很好用。

add_filter('woocommerce_checkout_get_value', 'populate_checkout_fields', 10, 2);
function populate_checkout_fields($value, $input) {
    $company = !empty($_POST['company']) ? $_POST['company'] : '';
    $address = !empty($_POST['address']) ? $_POST['address'] : '';
    $address_2 = !empty($_POST['address2']) ? $_POST['address2'] : '';

    $checkout_fields = array(
        'shipping_company'    => $company,
        'shipping_address_1' =>  $address,
        'shipping_address_2' =>  $address_2
    );

    foreach ($checkout_fields as $key_field => $field_value) {
        if ($input == $key_field && !empty($field_value)) {
            $value = $field_value;
        }
    }

    return $value;
}

我遇到的问题是,如果用户离开结帐页面然后回来,运输字段再次为空白或在登录时显示默认值。我需要运输字段在第一次加载时为空白,然后保存任何值通过用户键入或使用我的表单页面将其放入这些字段中。

标签: phpwordpresswoocommerce

解决方案


一个可能的解决方案是与客户会话。当你使用你的钩子时,试着像这样在他们的会话中保存值:

WC()->customer->set_shipping_address_1($address);
WC()->customer->set_shipping_address_2($address_2);
WC()->customer->set_shipping_company($company);

推荐阅读