Filtrul woocommerce_get_price nu funcționează pentru prețul variațiilor de produse în WooCommerce
11 iul. 2018, 15:35:18
Vizualizări: 17.9K
Voturi: 2
Am modificat prețul produselor în funcție de utilizatorii autentificați cu rolul de "reseller". Acest lucru funcționează pentru produsele standard, dar nu și pentru variațiile de produse.
De exemplu, prețul pentru o variație de 50ml a produsului este 9.20. Un "reseller" ar trebui să plătească 6.16 (9.20 * 0.67). Totuși, ieșirea pentru variația de produs rămâne 9.20.
Filtrul utilizat:
function pr_reseller_price( $price, $product ) {
if ( ! is_user_logged_in() )
return $price;
// Funcție care verifică dacă utilizatorul autentificat este reseller
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 );
Produs vs Variație de produs
// Produs
$product_id = 69;
$product = wc_get_product( $product_id );
echo $product->get_price(); // Returnează 6.16 (9.20 * 0.67)
// Variație de produs
$variations = $product->get_available_variations();
$variation = new WC_Product_Variation( $variations[0]['variation_id'] );
echo $variation->get_price(); // Returnează 9.20

Robbert
1.28K
Toate răspunsurile la întrebare
1
0
A trebuit să adaug și cârligul de filtrare pentru variațiile de produse.
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 iul. 2018 17:27:57
Întrebări similare
4
răspunsuri