Il filtro woocommerce_get_price non funziona per il prezzo delle varianti di prodotto
11 lug 2018, 15:35:18
Visualizzazioni: 17.9K
Voti: 2
Ho modificato il prezzo del mio prodotto in base a un utente loggato con il ruolo "rivenditore". Questo funziona per i prodotti standard, ma non per le varianti di prodotto.
Quindi il prezzo del mio prodotto per una variante da 50ml è 9.20. Un "rivenditore" dovrebbe pagare 6.16 (9.20 * 0.67). L'output per la variante del prodotto rimane comunque 9.20..
Filtro hook:
function pr_reseller_price( $price, $product ) {
if ( ! is_user_logged_in() )
return $price;
// Funzione che verifica se l'utente loggato è un rivenditore
if ( pr_has_role( 'reseller' ) ) {
$price = $price * 0.67;
}
return $price;
}
add_filter( 'woocommerce_get_price', 'pr_reseller_price', 10, 2 );
add_filter( 'woocommerce_get_regular_price', 'pr_reseller_price', 10, 2 );
add_filter( 'woocommerce_get_sale_price', 'pr_reseller_price', 10, 2 );
Prodotto vs Variante prodotto
// Prodotto
$product_id = 69;
$product = wc_get_product( $product_id );
echo $product->get_price(); // Restituisce 6.16 (9.20 * 0.67)
// Variante prodotto
$variations = $product->get_available_variations();
$variation = new WC_Product_Variation( $variations[0]['variation_id'] );
echo $variation->get_price(); // Restituisce 9.20

Robbert
1.28K
Tutte le risposte alla domanda
1
0
Ho dovuto aggiungere anche l'hook filter per le variazioni di prodotto.
add_filter( 'woocommerce_product_get_price', 'pr_reseller_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_price', 'pr_reseller_price', 10, 2 );
add_filter( 'woocommerce_product_get_regular_price', 'pr_reseller_price', 10, 2 );
add_filter( 'woocommerce_product_get_sale_price', 'pr_reseller_price', 10, 2 );

Robbert
1.28K
11 lug 2018 17:27:57
Domande correlate
1
risposte
4
risposte