Modifica del prezzo di visualizzazione di WooCommerce in base al ruolo e alla categoria dell'utente [chiuso]


13

Sto cercando di visualizzare un prezzo diverso in base al ruolo dell'utente (grossista, rivenditore, ecc.) E in base alla categoria.

Esiste un plug-in dinamico per i prezzi che visualizza questi sconti una volta che un articolo è stato aggiunto al carrello, ma non sulla pagina stessa.

Esiste un modo per utilizzare un filtro o un'azione per verificare il livello utente, controllare la categoria dell'articolo e quindi modificare il prezzo in modo dinamico?

Risposte:


18

Sì, è possibile utilizzare l' woocommerce_get_pricehook del filtro 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 
 *
 * 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 );
}

Ci ho provato Aggiunto questo codice in Functions.php. Non funziona

1
Grazie per questa ottima risposta. Per qualche ragione i miei prezzi di variazione non cambiano usando questo filtro. Conosci questo problema?
Robbert,

Funziona solo su prodotti semplici
Klevis Miho,

0

Puoi provare i prezzi specifici dei clienti per 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 di prodotto.


questo plugin può solo scartare un prodotto. Cosa succede se si desidera aumentare il prezzo?
Klevis Miho,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.