提问者:小点点

仅向多个授权用户角色显示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;
}

如何使它适用于一组用户角色,而不仅仅是一个?任何帮助都很感激。


共1个答案

匿名用户

因为您有两个阵列要比较:

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

您可以使用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; 
    }
}

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