gpt4 book ai didi

php - 如何使用先前输入的值填充自定义结帐字段,例如默认的 WooCommerce 结帐字段?

转载 作者:行者123 更新时间:2023-12-04 08:02:03 24 4
gpt4 key购买 nike

我使用以下代码添加了一个自定义字段:

add_action( 'woocommerce_before_order_notes', 'bbloomer_add_custom_checkout_field' );
function bbloomer_add_custom_checkout_field( $checkout ) {
$current_user = wp_get_current_user();
$saved_gst_no = $current_user->gst_no;

woocommerce_form_field( 'gst_no', array(
'type' => 'text',
'class' => array( 'form-row-wide' ),
'label' => 'GST Number',
'placeholder' => 'GST Number',
'required' => true
//'default' => $saved_gst_no,
), $checkout->get_value( 'gst_no' ) );
}
在 GST Number 字段(自定义结帐字段)中输入任何值,然后通过单击“下订单”按钮进入付款屏幕并在未完成交易的情况下返回结帐页面,所有默认的 woocommerce 字段(如计费电话、电子邮件等)都会从 session 。
但是,通过上述代码添加的自定义字段始终为空。如何在 guest 用户的自定义字段中自动填充先前输入的值,类似于自动填充默认 woocommerce 字段的方式?

最佳答案

更新 (在第一个函数上用 WC_Session 替换了错误的 set() 方法 get())
这也适用于 guest 用户。将您的代码替换为:

// Display checkout custom field
add_action( 'woocommerce_before_order_notes', 'add_custom_checkout_field' );
function add_custom_checkout_field( $checkout ) {
$key_field = 'gst_no';

woocommerce_form_field( $key_field, array(
'type' => 'text',
'class' => array( 'form-row-wide' ),
'label' => __('GST Number'),
'placeholder' => __('GST Number'),
'required' => true
//'default' => $saved_gst_no,
), $checkout->get_value($key_field) ? $checkout->get_value($key_field) : WC()->session->get($key_field) );
}

// Save checkout custom field value in a WC_Session variable
add_action( 'woocommerce_checkout_create_order', 'action_checkout_create_order', 10, 2 );
function action_checkout_create_order( $order, $data ) {
$key_field = 'gst_no';

if( isset($_POST[$key_field]) ) {
WC()->session->set($key_field, sanitize_text_field($_POST[$key_field]));
}
}

// Save checkout custom field value as user meta data
add_action( 'woocommerce_checkout_update_customer', 'action_checkout_update_customer', 10, 2 );
function action_checkout_update_customer( $customer, $data ) {
$key_field = $key_field;

if( isset($_POST['gst_no']) ) {
$customer->update_meta_data($key_field, sanitize_text_field($_POST[$key_field]));
}
}
注:使用 WC_Session 变量为客人存储提交的值,允许在未完成交易的情况下返回时在结账时显示它。

关于php - 如何使用先前输入的值填充自定义结帐字段,例如默认的 WooCommerce 结帐字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66411300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com