如何解决将 WooCommerce 结帐自定义字段保存为用户元数据
顺便说一下,我正在将我的结帐字段用于我的注册字段。
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','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] );
}
}
}
解决方法
主要错误是在帐单部分使用了以 shipping_
开头的结帐字段...
此外,您最好使用复合钩子 woocommerce_billing_fields
的钩子,它可以为您完成所有工作(因此无需像 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','required' => true,'class' => array('form-row-wide'),'clear' => true
);
return $fields;
}
代码位于活动子主题(或活动主题)的functions.php 文件中。经测试有效。
该字段还会出现在我的帐户 > 地址 > 编辑帐单邮寄地址中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。