php - 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;
}
我遇到的问题是,如果用户离开结帐页面然后回来,运输字段再次为空白或在登录时显示默认值。我需要运输字段在第一次加载时为空白,然后保存任何值通过用户键入或使用我的表单页面将其放入这些字段中。
解决方案
一个可能的解决方案是与客户会话。当你使用你的钩子时,试着像这样在他们的会话中保存值:
WC()->customer->set_shipping_address_1($address);
WC()->customer->set_shipping_address_2($address_2);
WC()->customer->set_shipping_company($company);
推荐阅读
- javascript - 不满足正则表达式准确获取密码
- java - 如果我将 Hashmap 元素添加到函数 Android 中,则无法访问它们
- python-3.6 - 获取从该消息转发的通道
- android - 将一项活动的状态转移到另一项活动
- python - 姜戈;通过 jquery ajax 查询对象
- php - 如何在laravel中将刀片与助手连接?
- random - 在 JMeter 中选择随机拆分变量
- reactjs - 在 React 的这种情况下,括号是什么意思?
- reactjs - setState(...) 只能更新一个挂载或挂载的组件
- sql-server - SQL Server 中事务日志和已删除行之间的大小差异