web-dev-qa-db-fra.com

Modification du prix d'affichage WooCommerce en fonction du rôle et de la catégorie d'utilisateur

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?

12
Tricky Buddha

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 );
}
17
Bainternet

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.

0
WisdmLabs