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

13

Je cherche à afficher un prix différent en fonction d'un rôle d'utilisateur (grossiste, revendeur, etc.) ET en fonction de la catégorie.

Il existe un plugin de tarification dynamique qui 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 utilisateur, vérifier la catégorie de l'article, puis modifier le prix de manière dynamique?

Bouddha délicat
la source

Réponses:

18

Oui, vous pouvez utiliser le woocommerce_get_pricecrochet de filtrage 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 );
}
Bainternet
la source
J'ai essayé ça. Ajout de ce code dans functions.php. Ça ne marche pas.
1
Merci pour cette excellente réponse. Pour une raison quelconque, mes prix de variation ne changent pas en utilisant ce filtre. Connaissez-vous ce problème?
Robbert
Fonctionne uniquement sur les produits simples
Klevis Miho
0

Vous pouvez essayer les tarifs spécifiques au client pour WooCommerce . Avec ce plugin, vous pouvez ajouter des prix différents pour les utilisateurs enregistrés.

Actuellement, le plugin est dans sa phase initiale, mais il y aura bientôt des mises à jour pour prendre en charge des fonctionnalités supplémentaires telles que le prix basé sur la catégorie de produit.

WisdmLabs
la source
ce plugin ne peut escompter qu'un produit. Et si vous voulez augmenter le prix?
Klevis Miho