php 基于角色的可变产品

ruyhziif  于 2023-08-02  发布在  PHP
关注(0)|答案(2)|浏览(129)

我有一个woocommerce商店,出售各种产品。
例如,吹枪变量:4件一箱
我试图使它这样的变量产品将不会显示单一项目时登录。我已经得到了一个点,它会隐藏选项标签文本,但不删除选项都在一起。
varaible options

add_filter('woocommerce_variation_option_name', 'custom_hide_single_item_option', 10, 1);
function custom_hide_single_item_option($term_name)
{
    // Get the current user's roles
    $user = wp_get_current_user();
    $user_roles = (array)$user->roles;

    // Define the roles to exclude
    $roles_to_exclude = array('reseller', 'reseller 1', 'administrator');

    // If the user has any of the excluded roles, remove the "Single Item (1pc)" option
    if (array_intersect($user_roles, $roles_to_exclude) && $term_name === 'Single Item (1pc)') {
        return false;
    }

    return $term_name;
}

字符串
我提供了我正在使用的php片段,屏幕截图显示了该片段的结果。

d4so4syb

d4so4syb1#

我不太明白/看到描述和/或图像中的问题。我看到的唯一一件事是一个下拉菜单与购买4的可能性。您要移除下拉式清单吗?如果是那样的话,我不认为PHP是问题所在?

dnph8jn4

dnph8jn42#

add_filter('woocommerce_dropdown_variation_attribute_options_args', 'hide_attribute_values_for_specific_user_roles', 10, 1);
function hide_attribute_values_for_specific_user_roles( $args ) {
    $user = wp_get_current_user();
    $user_roles = (array) $user->roles;

    $roles_to_exclude = array('reseller', 'reseller 1', 'administrator');

    if ( count( array_intersect( $user_roles, $roles_to_exclude ) ) > 0 ) {
        // Your attribute can have a different slug
        $attribute_slug_to_hide = 'pa_quantity';
        
        // This is a term (attribute option) slug, not its name! You may need to replace this value with the one you have on your website
        $attribute_value_to_hide = 'single-item-1pc'; 
        
        if ( isset( $args['attribute'] ) && $args['attribute'] === $attribute_name_to_hide ) {
            $value_index = array_search( $attribute_value_to_hide, $args['options'] );
            
            if ($value_index !== false) {
                unset($args['options'][$value_index]);
            }
        }
    }

    return $args;
}

字符串

相关问题