微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 WooCommerce 中的 WC_Checkout get_value() 方法获取结帐自定义字段提交的值

如何解决使用 WooCommerce 中的 WC_Checkout get_value() 方法获取结帐自定义字段提交的值

在 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 = $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 Number 字段中输入任何值 自定义结帐字段),然后通过单击“下订单”按钮转到付款屏幕并在未完成交易的情况下返回结帐页面,所有认 woocommerce 字段帐单电话、电子邮件等都是从会话中自动填充的。

但是,通过上述代码添加自定义字段始终为空。我尝试记录 $checkout->get_value( 'gst_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_Checkout 方法 get_value() 使用用户元数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。