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

Posted

技术标签:

【中文标题】Woocommerce如何仅在用户未登录时设置default_checkout_billing_country【英文标题】:Woocommerce how to set default_checkout_billing_country only if user is not logged in 【发布时间】:2021-11-03 12:41:52 【问题描述】:

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

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

【问题讨论】:

developer.wordpress.org/reference/functions/is_user_logged_in 【参考方案1】:

你可以使用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';
  ;
  
;

让我知道你是否可以让它工作!

【讨论】:

以上是关于Woocommerce如何仅在用户未登录时设置default_checkout_billing_country的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WooCommerce 中为未登录用户禁用特定插件?

未登录用户 Woocommerce,重定向

仅在 WooCommerce 单一产品页面上加载脚本

当用户在 WooCommerce 中登录/注销时,如何防止清空购物车?

错误:WooCommerce 避免为非登录用户添加到购物车

如何在 C# 中使用 TaskScheduler 设置“仅在登录时运行”和“运行方式”?