我正在寻找一种方法来隐藏我的woocommerce主题的结帐页面上的帐单邮寄地址,如果用户已经填写了结算表单(来自之前的订单,或者如果用户之前已经从"我的帐户"页面)。
如果用户已登录(见下文),我已经找到了在结帐页面上完全隐藏结算/发货表单的方法,但是我无法找到办法完成上述操作。
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
if( is_user_logged_in() ){
unset($fields['billing']);
$fields['billing'] = array();
}
return $fields;
}
有什么想法吗?
谢谢!
答案 0 :(得分:4)
这将取决于您认为是一个完整填写的地址我制作的片段功能,您可以使用它来进一步。
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
if( is_user_logged_in() && !has_billing()){
unset($fields['billing']);
$fields['billing'] = array();
}
return $fields;
}
// Check the meta of Postcode and Country if they are entered.
function has_billing($user_id = false){
if(!$user_id)
$user_id = get_current_user_id();
$shipping_postcode = get_user_meta( $user_id, 'billing_postcode', true );
$shipping_country = get_user_meta( $user_id, 'billing_country', true );
// Fetch more meta for the condition has needed.
if($shipping_postcode && $shipping_country){
return true;
}
return false;
}
注意:前缀发货_ 有一个用于结算(结算_ )。
修改:此处元键 billing_address_1 和 billing_address_2 始终可以是结算_ 或发货_ < / p>
此外,如果由于某种原因您没有在用户元键中关联的送货地址或帐单邮寄地址,但客户曾执行订单,您可以检查此代码以获取订单地址。
Woocommerce WC_Order get_shipping_address() not returning as array(旧帖可能不再有效)