WooCommerce – добавление пользовательской цены на каждый товар в корзине

Я хотел бы обновить цены на продукты, добавляющие пользовательскую цену в корзину, используя этот простой кусок кода update_post_meta( $product->id, '_regular_price', $frame_price_added); ,

Примечание. То, что я пытаюсь достичь, – это добавить эту индивидуальную цену к каждому продукту в корзине.

Я пытаюсь получить $frame_price_added следующим образом:

 $frame_price = $res['_number_field'][0]; $frame_price_added = $product->price + $frame_price; 

Здесь $product->price – цена, поступающая от продукта woocomerce, и $frame_price исходит из моей новой добавленной цены.

Мне было интересно, как мне связать эту новую цену с тележкой, потому что она не работает.

Я попытался использовать update_post_meta( $product->id, '_price', $frame_price_added); и когда страница обновляется, она добавляет и сохраняет пользовательскую цену для продукта и сохраняет его.

Любая идея о том, как я могу добиться этого правильно?

Благодарю.


Edit: Еще одна вещь … Я искал функцию, которая может быть вызвана на добавление в корзину, и я ничего не нашел, а также вызываемый woocommerce_template_single_add_to_cart на woocommerce_template_single_add_to_cart с woocommerce_single_product_summary но он не нашел никакой функции.

Обновление: для WooCommerce 3.0+ Изменение цен на товары в WooCommerce версии 3.0

Вы можете использовать woocommerce_before_calculate_totals чтобы настроить цены на товары в корзине.

Таким образом, вы можете определить переменные $framed_price как глобальные в своей функции.

Это код:

 // getting your additional price outside the function (making any conditional calculations) $framed_price = 20; add_action( 'woocommerce_before_calculate_totals', 'add_custom_total_price', 10 ); function add_custom_total_price( $cart_object ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; global $framed_price; foreach ( $cart_object->get_cart() as $key => $value ) { $value['data']->price += $framed_price; } } 

Или получите свою пользовательскую цену внутри зацепившейся функции (опционально, в зависимости от того, как вы получаете свою пользовательскую цену) :

 add_action( 'woocommerce_before_calculate_totals', 'add_custom_total_price', 10 ); function add_custom_total_price( $cart_object ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; $framed_price = 20; foreach ( $cart_object->get_cart() as $key => $value ) { $value['data']->price += $framed_price; } } 

Этот код проверен и работает.

Естественно, этот код распространяется на файл functions.php вашей активной дочерней темы (или темы) или в любом файле плагина.

Ссылка: WooCommerce Cart – Динамическая ценовая переменная переходит в пользовательский ценовой крючок