Modifica del Prezzo Visualizzato in WooCommerce in Base al Ruolo Utente e alla Categoria
In WordPress con WooCommerce, sto cercando di visualizzare un prezzo diverso in base al ruolo utente (grossista, rivenditore, ecc.) E in base alla categoria.
Esiste un plugin di prezzi dinamici che mostra questi sconti quando un articolo viene aggiunto al carrello, ma non sulla pagina stessa del prodotto.
C'è un modo per utilizzare un filtro o un'azione per verificare il livello dell'utente, controllare la categoria dell'articolo e quindi modificare il prezzo in modo dinamico?

Sì, esiste. Puoi utilizzare il filtro woocommerce_get_price
per filtrare il valore in base al ruolo dell'utente e restituire un prezzo di conseguenza, ad esempio:
add_filter('woocommerce_get_price', 'custom_price_WPA111772', 10, 2);
/**
* custom_price_WPA111772
*
* Filtra il prezzo in base alla categoria e al ruolo dell'utente
* @param float $price Prezzo attuale
* @param WC_Product $product Prodotto
* @return float Prezzo modificato
*/
function custom_price_WPA111772($price, $product) {
if (!is_user_logged_in()) return $price;
//Verifica se il prodotto è in una categoria specifica, ad esempio magliette
if( has_term( 'magliette', 'product_cat' ,$product->ID) ) {
//Verifica se l'utente ha il ruolo di rivenditore utilizzando una funzione helper (vedi sotto)
if (has_role_WPA111772('rivenditore')){
//Applica uno sconto del 10%
$price = $price * 0.9;
}
}
return $price;
}
/**
* has_role_WPA111772
*
* Funzione per verificare se un utente ha un ruolo specifico
*
* @param string $role Ruolo da verificare
* @param int $user_id ID utente
* @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 );
}

Ho provato questo. Ho aggiunto questo codice in functions.php. Non funziona.

Grazie per questa ottima risposta. Per qualche motivo i prezzi delle varianti non cambiano utilizzando questo filtro. Hai familiarità con questo problema?

Puoi provare Customer Specific Pricing for WooCommerce. Con questo plugin, puoi aggiungere prezzi diversi per gli utenti registrati.
Attualmente il plugin è nella sua fase iniziale, ma presto ci saranno aggiornamenti per supportare funzionalità aggiuntive come il prezzo basato sulla categoria del prodotto.
