gpt4 book ai didi

php - 将 WooCommerce 结帐自定义字段保存为用户元数据

转载 作者:行者123 更新时间:2023-12-04 15:00:53 24 4
gpt4 key购买 nike

我想将我的自定义注册字段添加到我的结帐页面表单。

我正在使用此代码将自定义字段添加到我的注册区域。

顺便说一句,我正在使用我的结帐字段到我的注册字段。

add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {

$fields['billing']['shipping_tc'] = array(
'label' => __('TC Kimlik No', 'woocommerce'),
'placeholder' => _x('Fatura İçin Gerekli', 'placeholder', 'woocommerce'),
'required' => true,
'class' => array('form-row-wide'),
'clear' => true
);

return $fields;
}

我试过这段代码来更新用户元数据

add_action( 'woocommerce_checkout_update_user_meta', 'reigel_woocommerce_checkout_update_user_meta', 10, 2 );
function reigel_woocommerce_checkout_update_user_meta( $customer_id, $posted ) {
if (isset($posted['shipping_tc'])) {
$dob = sanitize_text_field( $posted['shipping_tc'] );
update_user_meta( $user_id, $dob, $_POST[$dob]);
}
}

没有错误,但它不起作用...任何人都可以帮助我吗?

在这段代码的帮助下,我成功地更新了其他默认结帐值;

// Custom function to save Usermeta or Billing Address of registered user
add_action('woocommerce_created_customer','zk_save_billing_address');
function zk_save_billing_address($user_id){
$address = $_POST;
foreach ($address as $key => $field){
// Only billing fields values
if( strpos( $key, 'billing_' ) !== false ){
// Condition to add firstname and last name to user meta table
if($key == 'billing_first_name' || $key == 'billing_last_name'){
$new_key = str_replace( 'billing_', '', $key );
update_user_meta( $user_id, $new_key, $_POST[$key] );
}
update_user_meta( $user_id, $key, $_POST[$key] );
}
}
}

如何通过注册更新自定义结帐字段?

这里是 my registration page .

最佳答案

主要错误是在结算部分使用了结帐字段,该字段键以 shipping_ 开头……

此外,您应该更好地使用复合钩子(Hook) woocommerce_billing_fields 钩子(Hook),它将为您做所有事情(因此无需像 WooCommerce 那样将字段保存为用户元数据或订单项元数据) .

因此,唯一需要的代码替换将是(使用字段键 billing_identifier 而不是混淆 shipping_tc):

add_filter( 'woocommerce_billing_fields' , 'add_custom_billing_field' );
function add_custom_billing_field( $fields ) {
$fields['billing_identifier'] = array(
'label' => __('TC Kimlik No', 'woocommerce'),
'placeholder' => _x('Fatura İçin Gerekli', 'placeholder', 'woocommerce'),
'required' => true,
'class' => array('form-row-wide'),
'clear' => true
);

return $fields;
}

代码进入事件子主题(或事件主题)的 functions.php 文件。经过测试并有效。

该字段将另外显示在“我的帐户”>“地址”>“编辑帐单地址”中。

关于php - 将 WooCommerce 结帐自定义字段保存为用户元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66971000/

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