仅向多个授权用户角色显示WooCommerce产品



我正在尝试调整"在WooCommerce中对未经授权的用户完全隐藏产品">的答案代码,以允许多个自定义用户角色查看此产品。我相信实现此目的的最佳方法是扩展授权用户功能以包含此用户角色。

这是我试图实施但没有成功的更改。有人可以照亮如何进行吗?

// Conditional function checking for authorized users
function is_authorized_user() {
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
$caps = $user->allcaps;
if ( ( isset($caps['edit_product']) && $caps['edit_product'] ) ||
array( 'custom_user_role1', 'custom_user_role2', $user->roles ) )
return true;
} else 
return false;
}

如何使其适用于一系列用户角色,而不仅仅是一个?任何帮助,不胜感激。

因为您有 2 个数组要比较:

  • 您的 2 个自定义角色(在数组中(
  • 当前用户角色(即数组(

您可以使用array_intersect()PHP 函数使其以这种方式工作:

// Conditional function checking for authorized users
function is_authorized_user(){
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
$caps = $user->allcaps;
if ( ( isset($caps['edit_product']) && $caps['edit_product'] ) || 
array_intersect( ['custom_user_role1', 'custom_user_role2'], $user->roles ) ) {
return true;
}
return false; 
} 
else {
return false; 
}
}

它现在应该适用于多个用户角色。

最新更新