Я хотел бы обновить цены на продукты, добавляющие пользовательскую цену в корзину, используя этот простой кусок кода 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 – Динамическая ценовая переменная переходит в пользовательский ценовой крючок