Woocommerce 如何仅在用户未登录时设置 default_checkout_billing_country

Woocommerce how to set default_checkout_billing_country only if user is not logged in

我有这个功能,如果用户是客人,我只想设置账单国家,否则我们不应该更改账单国家,而是将账单国家作为用户在 WooCommerce 的个人资料中的内容。

add_filter( 'default_checkout_billing_country', 'bbloomer_change_default_checkout_country' );
 
function bbloomer_change_default_checkout_country() {
  return 'US'; 
}

您可以使用 is_user_logged_in:

add_filter( 'default_checkout_billing_country', 'bbloomer_change_default_checkout_country' );
 
function bbloomer_change_default_checkout_country($default) {

  if(is_user_logged_in()){
    return $default;
  }else{
    return 'US';
  };
   
};

但是,有时,由于缓存问题,is_user_logged_in 不起作用。在这种情况下,您可以使用 global $current_user.

add_filter( 'default_checkout_billing_country', 'bbloomer_change_default_checkout_country' );

function bbloomer_change_default_checkout_country($default) {

  global $current_user;

  if($current_user->ID){
    return $default; 
  }else{
    return 'US';
  };
  
};

如果你能让它工作,请告诉我!