Je cherche à afficher un prix différent basé sur un rôle d'utilisateur (grossiste, revendeur, etc.) ET basé sur la catégorie.
Un plugin de tarification dynamique affiche ces remises une fois qu'un article est ajouté au panier, mais pas sur la page elle-même.
Existe-t-il un moyen d'utiliser un filtre ou une action pour vérifier le niveau d'utilisateur, vérifier la catégorie de l'article puis modifier le prix de manière dynamique?
Oui, vous pouvez utiliser le crochet de filtre woocommerce_get_price
pour filtrer la valeur en fonction du rôle de l'utilisateur et renvoyer un prix en conséquence, par exemple:
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 );
}
Vous pouvez essayer Tarification spécifique au client pour WooCommerce . Avec ce plugin, vous pouvez ajouter différents prix pour les utilisateurs enregistrés.
Le plug-in est actuellement dans sa phase initiale, mais des mises à jour seront bientôt disponibles pour prendre en charge des fonctionnalités supplémentaires telles que le prix en fonction de la catégorie de produit.