Modificarea prețului afișat în WooCommerce în funcție de rolul utilizatorului și categorie
Î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?

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

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

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ă?

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.
