El gancho woocommerce_get_price no funciona para el precio de variaciones de producto en WooCommerce

11 jul 2018, 15:35:18
Vistas: 17.9K
Votos: 2

He modificado el precio de mis productos basado en un usuario que ha iniciado sesión con un rol de "revendedor". Esto funciona para mis productos normales, pero no para las variaciones de producto.

El precio de mi variación de producto de 50ml es 9.20. Un "revendedor" debería pagar 6.16 (9.20 * 0.67). Sin embargo, el precio que muestra mi variación de producto sigue siendo 9.20.

Gancho de filtro:

function pr_reseller_price( $price, $product ) {

   if ( ! is_user_logged_in() )
      return $price;

   // Función que verifica si el usuario logueado es revendedor
   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 );

Producto vs Variación de producto

// Producto
$product_id = 69;
$product = wc_get_product( $product_id );
echo $product->get_price(); // Retorna 6.16 (9.20 * 0.67)

// Variación de producto
$variations = $product->get_available_variations();
$variation = new WC_Product_Variation( $variations[0]['variation_id'] );
echo $variation->get_price(); // Retorna 9.20
0
Todas las respuestas a la pregunta 1
0

Tuve que agregar el gancho de filtro para las variaciones de producto también.

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 );
11 jul 2018 17:27:57