Изменить количество шагов в зависимости от роли пользователя в WooCommerce - PullRequest
1 голос
/ 23 апреля 2019

В WooCommerce я пытаюсь изменить настройки поля количества продукта как шаг в зависимости от роли пользователя и продукта.

Вот мой код

add_filter( 'woocommerce_quantity_input_args', 'jk_woocommerce_quantity_input_args', 10, 2 ); // Simple products
function jk_woocommerce_quantity_input_args( $args, $product, $roles ) {
    if ( is_singular( 'product' ) ) {
        if( $product->get_id() == 85 ) {
            $args['input_value'] = 30;
        } else {
            $args['input_value'] = 5;
        }
    }

    if( array ( $roles, 'customer_roles')) {
        $args['min_value']      = 1;
         $args['step']           = 1;               
    }

    if( $product->get_id() == 85 ) {
            $args['min_value'] = 30;
            $args['step']      = 5;
        } else {
            $args['min_value'] = 5;
            $args['step']      = 5;
        }
        return $args;
}

Как мне сделать этот кодтоже работаешь на роли пользователя?

1 Ответ

0 голосов
/ 24 апреля 2019

В вашем коде есть некоторые ошибки, например, переменная $roles не существует для этого аргумента ловушки и некоторых других… Попробуйте следующее:

add_filter( 'woocommerce_quantity_input_args', 'quantity_input_args_filter_callback', 10, 2 );
function quantity_input_args_filter_callback( $args, $product ) {
    // HERE define the user role:
    $user_role = 'customer_roles';

    $user = wp_get_current_user(); // Get the WP_Use Object

    // For a specific user role, we keep default woocommerce quantity settings
    if( in_array( $user_role, $user->roles ) ) 
        return $args; // Exit to default

    // For the others as following

    if ( is_singular( 'product' ) ) {
        if( $product->get_id() == 85 ) {
            $args['input_value'] = 30;
        } else {
            $args['input_value'] = 5;
        }
    }

    if( $product->get_id() == 85 ) {
        $args['min_value'] = 30;
        $args['step']      = 5;
    } else {
        $args['min_value'] = 5;
        $args['step']      = 5;
    }
    return $args;
}

Код находится в файле function.php вашегоАктивная детская тема (или активная тема).Должно работать.

...