É possível recalcular os preços do carrinho?

No nosso site, temos a function, que é mostrada abaixo, para alterar os preços de acordo com a function do usuário. O problema é que, se um cliente efetuar o login e tiver uma function premium, os preços permanecerão iguais, se o cliente não estiver nesse papel. Existe uma maneira de recalcular os preços do carrinho?

add_filter('woocommerce_get_price', 'return_custom_price', $product, 2); add_filter('woocommerce_product_variation_get_price', 'return_custom_price', $product, 2); function return_custom_price($price, $product) { if (! current_user_can('premium') || ! is_user_logged_in()) { global $post, $woocommerce; return $new_price = $price * 1.25; } return $price; } 

Solutions Collecting From Web of "É possível recalcular os preços do carrinho?"

Talvez você precise adicionar:

 wc_delete_product_transients($post->ID); 

Eu fiz algo assim no projeto opther e isso funcionou:

  if (is_user_logged_in()) { add_filter('woocommerce_product_variation_get_regular_price', 'my_custom_price', 10, 2); add_filter('woocommerce_product_variation_get_price','my_custom_price', 10, 2); } function my_custom_price( $price ) { global $post; // Delete product cached price (if needed) wc_delete_product_transients($post->ID); // Return the new price return $price = ($price * 1.1) ;}