Modificarea prețului afișat în WooCommerce în funcție de rolul utilizatorului și categorie

27 aug. 2013, 08:07:40
Vizualizări: 28.5K
Voturi: 13

În WordPress cu WooCommerce, încerc să afișez un preț diferit bazat pe rolul utilizatorului (angrosist, dealer, etc) ȘI în funcție de categorie.

Există un plugin de prețuri dinamice care afișează aceste reduceri odată ce un produs este adăugat în coș, dar nu și în pagina produsului.

Există vreo modalitate de a folosi un filtru sau o acțiune pentru a verifica nivelul utilizatorului, categoria produsului și apoi să modific prețul în mod dinamic?

0
Toate răspunsurile la întrebare 2
3
19

Da, există, puteți utiliza filtrul woocommerce_get_price pentru a filtra valoarea în funcție de rolul utilizatorului și a returna un preț corespunzător, de exemplu:

add_filter('woocommerce_get_price', 'custom_price_WPA111772', 10, 2);
/**
 * custom_price_WPA111772 
 *
 * filtrează prețul în funcție de categorie și rolul utilizatorului
 * @param  $price   
 * @param  $product 
 * @return 
 */
function custom_price_WPA111772($price, $product) {
    if (!is_user_logged_in()) return $price;

    //verifică dacă produsul se află într-o categorie dorită, de exemplu tricouri
    if( has_term( 'shirts', 'product_cat' ,$product->ID) ) {
        //verifică dacă utilizatorul are rolul de dealer utilizând o funcție helper, vezi mai jos
        if (has_role_WPA111772('dealer')){
            //acordă utilizatorului o reducere de 10%
            $price = $price * 0.9;
        }
    }
    return $price;
}

/**
 * has_role_WPA111772 
 *
 * funcție pentru a verifica dacă un utilizator are un anumit rol
 * 
 * @param  string  $role    rolul de verificat
 * @param  int  $user_id    id-ul utilizatorului
 * @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 );
}
27 aug. 2013 12:33:02
Comentarii

Am încercat asta. Am adăugat acest cod în functions.php. Nu funcționează.

User User
18 iun. 2016 18:12:30

Mulțumesc pentru acest răspuns minunat. Din anumite motive, prețurile variantei mele nu se modifică folosind acest filtru. Ești familiarizat cu această problemă?

Robbert Robbert
11 iul. 2018 15:13:05

Funcționează doar pe produse Simple

Klevis Miho Klevis Miho
1 oct. 2018 21:08:00
1

Puteți încerca Customer Specific Pricing for WooCommerce. Cu acest plugin, puteți adăuga prețuri diferite pentru utilizatorii înregistrați.

În prezent, plugin-ul se află în faza inițială, dar vor urma actualizări în curând pentru a adăuga suport pentru funcționalități suplimentare, cum ar fi prețuri bazate pe categoria de produse.

6 sept. 2014 11:27:36
Comentarii

acest plugin poate doar să ofere reducere la un produs. Dar dacă dorești să crești prețul?

Klevis Miho Klevis Miho
1 oct. 2018 21:07:27