【发布时间】:2021-11-11 13:28:10
【问题描述】:
这几天我一直在摸不着头脑,需要一些指点。
我正在为 WooCommerce 网站完全从头开始制作自定义主题,现在我正在尝试让购物车功能正常工作。我一直在尝试使用按钮 (+/-) 来更新购物车中产品的数量。
对我来说,问题似乎是我在functions.php 中使用的WC() 与当前的前端会话不是同一个实例,或者这些行中的某个实例。至少我现在的想法。
如果我调试正确,WC()->cart->set_quantity($cart_item_key, 0) 没有错误(如果使用数字 0),所有其他数字都会给出“500(内部服务器错误)”。但即使购物车中的数量为 0,也永远不会改变。
我已正确地将脚本排入队列,因此单击按钮时 AJAX 函数调用可以正常执行。
这是我的 HTML 和 PHP(简化版)
<div class="cart-items">
<?php foreach(WC()->cart->get_cart() as $cart_item_key => $cart_item) : ?>
<div class="cart-item">
<div class="quantity" id="cart-qty-<?php echo $cart_item_key ?>">
<button class="minus" id="cart-subtract"
onclick="updateCartQuantity('<?php echo $cart_item_key ?>', '<?php echo $cart_item['quantity'] ?>', -1)">-</button>
<p><?php echo $cart_item['quantity'] ?></p>
<button class="plus" id="cart-add">+</button>
</div>
</div>
<? endforeach; ?>
</div>
这是我的 JS(在一个名为 shopping-ajax.js 的文件中)
function updateCartQuantity(cart_item_key, current_qty, value) {
function qty_cart() {
jQuery.ajax({
type: "POST",
url: my_ajax_object.ajax_url,
data: {
action: "update_cart",
hash: cart_item_key,
quantity: current_qty,
value: value,
},
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
},
});
}
qty_cart();
}
这是我的 PHP 函数(在 functions.php 内)
function updateCartQuantity(){
$cart_item_key = $_REQUEST['cart_item_key'];
$quantity = $_REQUEST['quantity'];
$value = $_REQUEST['value'];
WC()->cart->set_quantity($cart_item_key, $quantity + $value);
echo $quantity + $value;
wp_die();
}
add_action( 'wp_ajax_nopriv_update_cart', 'updateCartQuantity' );
add_action( 'wp_ajax_update_cart', 'updateCartQuantity' );
非常感谢您提前提供的任何帮助或指导!
【问题讨论】:
标签: javascript php ajax wordpress woocommerce