Я пытаюсь изменить цену продукта в корзине, используя следующую функцию:
add_action( 'woocommerce_before_shipping_calculator', 'add_custom_price' ); function add_custom_price( $cart_object ) { foreach ( $cart_object->cart_contents as $key => $value ) { $value['data']->price = 400; } }
Он корректно работал в WooCommerce версии 2.6.x, но больше не работает в версии 3.0+
Как я могу заставить его работать в WooCommerce Version 3.0+?
Благодарю.
С WooCommerce версии 3.0+ вам необходимо:
woocommerce_before_calculate_totals
этого используйте woocommerce_before_calculate_totals
. get_cart()
использовать метод get_cart()
set_price()
использовать метод set_price()
Вот код:
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 10, 1); function add_custom_price( $cart_obj ) { // This is necessary for WC 3.0+ if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; foreach ( $cart_obj->get_cart() as $key => $value ) { $value['data']->set_price( 40 ); } }
Код находится в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.
Этот код проверен и работает.