Php 使用WooCommerce中的WC_checkout Get_value()方法获取签出自定义字段提交的值
在WooCommerce结帐页面中,我使用以下代码添加了一个自定义字段:Php 使用WooCommerce中的WC_checkout Get_value()方法获取签出自定义字段提交的值,php,wordpress,woocommerce,checkout,usermetadata,Php,Wordpress,Woocommerce,Checkout,Usermetadata,在WooCommerce结帐页面中,我使用以下代码添加了一个自定义字段: 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 = $cur
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' ) );
error_log( $checkout->get_value( 'gst_no' ) );
}
在GST编号字段(自定义签出字段)中输入任何值,然后单击“下订单”按钮进入付款屏幕并返回到签出页面而不完成交易时,所有默认的电子商务字段(如计费电话、电子邮件等)都会从会话中自动填充
但是,通过上述代码添加的自定义字段始终为空。我尝试记录$checkout->get\u value('gst\u no')
的值,它总是空的
如何使
$checkout
对象存储自定义字段值?更新2
因为您还需要将“gst_no”自定义字段值保存为用户数据。以下内容将该自定义字段保存为用户元数据:
add_action( 'woocommerce_checkout_update_customer', 'action_checkout_update_customer', 10, 2 );
function action_checkout_update_customer( $customer, $data ) {
if( isset($_POST['gst_no']) ) {
$customer->update_meta_data( 'gst_no', sanitize_text_field($_POST['gst_no']) );
}
}
代码进入活动子主题(或活动主题)的functions.php文件。它应该会起作用
注意:有关信息,请使用WC\u Checkout
方法get\u value()
使用用户元数据
自定义字段已成功保存为用户元(以及订单元)。但是,它不会保存在
$checkout
对象中,这意味着woocommerce\u form\u字段
函数中的默认值始终为空。这意味着,如果客户重新加载结帐页面,即使客户未登录,默认字段也会通过会话自动填充,但自定义字段始终为空,且不具有以前输入的值。此文件适用于登录的客户,是否有任何方法可为来宾用户实现此功能?就此问题提出了新问题-