【发布时间】:2018-07-09 03:28:25
【问题描述】:
我正在尝试在 WooCommerce 上动态更改 WooCommerce 价格,已经尝试了此处发布的各种解决方案,但没有人适合我的情况。
这是一个例子,我有一个调用receive_order_ajax_request 函数的ajax 函数,将产品添加到购物车中,然后我调用update_vehicle_price 来更新产品的价格。但是所有产品都保持相同的价格。有人可以帮帮我吗?
class WhollOrder {
public function __construct() {
add_action( 'wp_ajax_nopriv_receive_order_ajax_request', array( $this, 'receive_order_ajax_request' ) );
add_action( 'wp_ajax_receive_order_ajax_request', array( $this, 'receive_order_ajax_request' ) );
}
public function receive_order_ajax_request() {
global $woocommerce;
$booking_details = $_POST['booking_details'];
if ( isset( $booking_details ) && ! empty( $booking_details ) ) {
foreach ( $booking_details['vehicles'] as $vehicle ) {
$woocommerce->cart->add_to_cart( $vehicle['product_id'], (int) $vehicle['product_qty'] );
}
$this->update_vehicle_price( $booking_details['vehicles'] );
} else {
wp_send_json_error(
array(
'message' => 'Preencha todos os campos'
)
);
}
wp_die();
}
private function update_vehicle_price( $vehicles ) {
global $woocommerce;
foreach ( WC()->cart->get_cart() as $key => $cart_item ) {
foreach ( $vehicles as $vehicle ) {
if ( $vehicle['product_id'] == $cart_item['product_id'] ) {
WC()->cart->get_cart()[$key]['data']->set_price( 1000.00 );
}
}
}
}
}
new WhollOrder();
这不是重复的,因为我编码的方式无法使用其他问题的答案。
【问题讨论】:
-
@LoicTheAztec 这不是重复的,因为我正在尝试做与其他问题不同的事情,只需查看我的代码并与它们进行比较,我没有使用挂钩来更改价格.
-
抱歉,您的代码不完整,所以没有人能真正理解您做错了什么……请记住,“寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。使用
set_price()方法更改购物车项目价格只能在@中完成987654325@.
标签: php ajax wordpress woocommerce hook-woocommerce