Cambio del precio de visualización de WooCommerce según el rol y la categoría del usuario [cerrado]

13

Estoy buscando mostrar un precio diferente en función de un rol de usuario (mayorista, distribuidor, etc.) Y según la categoría.

Hay un complemento de precios dinámicos que muestra estos descuentos una vez que se agrega un artículo al carrito, pero no en la página en sí.

¿Hay alguna manera de usar un filtro o acción para verificar el nivel de usuario, verificar la categoría del artículo y luego cambiar el precio dinámicamente?

Buda complicado
fuente

Respuestas:

18

Sí, puede usar el woocommerce_get_priceenlace de filtro para filtrar el valor en función del rol del usuario y devolver un precio en consecuencia, por ejemplo:

add_filter('woocommerce_get_price', 'custom_price_WPA111772', 10, 2);
/**
 * custom_price_WPA111772 
 *
 * filter the price based on category and user role
 * @param  $price   
 * @param  $product 
 * @return 
 */
function custom_price_WPA111772($price, $product) {
    if (!is_user_logged_in()) return $price;

    //check if the product is in a category you want, let say shirts
    if( has_term( 'shirts', 'product_cat' ,$product->ID) ) {
        //check if the user has a role of dealer using a helper function, see bellow
        if (has_role_WPA111772('dealer')){
            //give user 10% of
            $price = $price * 0.9;
        }
    }
    return $price;
}

/**
 * has_role_WPA111772 
 *
 * function to check if a user has a specific role
 * 
 * @param  string  $role    role to check against 
 * @param  int  $user_id    user id
 * @return boolean
 */
function has_role_WPA111772($role = '',$user_id = null){
    if ( is_numeric( $user_id ) )
        $user = get_user_by( 'id',$user_id );
    else
        $user = wp_get_current_user();

    if ( empty( $user ) )
        return false;

    return in_array( $role, (array) $user->roles );
}
Bainternet
fuente
Intenté esto Se agregó este código en functions.php. No funciona
1
Gracias por esta gran respuesta. Por alguna razón, mis precios de variación no cambian usando este filtro. ¿Estás familiarizado con este problema?
Robbert
Funciona solo en productos simples
Klevis Miho
0

Puede probar los precios específicos del cliente para WooCommerce . Con este complemento, puede agregar diferentes precios para los usuarios registrados.

Actualmente, el complemento está en su fase inicial, pero pronto habrá actualizaciones para admitir características adicionales como el precio según la categoría del producto.

WisdmLabs
fuente
Este complemento solo puede descontar un producto. ¿Qué pasa si quieres subir el precio?
Klevis Miho