Modifica del Prezzo Visualizzato in WooCommerce in Base al Ruolo Utente e alla Categoria

27 ago 2013, 08:07:40
Visualizzazioni: 28.5K
Voti: 13

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?

0
Tutte le risposte alla domanda 2
3
19

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 );
}
27 ago 2013 12:33:02
Commenti

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

User User
18 giu 2016 18:12:30

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

Robbert Robbert
11 lug 2018 15:13:05

Funziona solo sui prodotti semplici

Klevis Miho Klevis Miho
1 ott 2018 21:08:00
1

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.

6 set 2014 11:27:36
Commenti

questo plugin può solo scontare un prodotto. Cosa succede se vuoi aumentare il prezzo?

Klevis Miho Klevis Miho
1 ott 2018 21:07:27