php – Woocommerce | WordPress – WC_Cart :: set_quantity –
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Woocommerce | WordPress – WC_Cart :: set_quantity –,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2509字,纯文字阅读大概需要4分钟。
内容图文
![php – Woocommerce | WordPress – WC_Cart :: set_quantity –](/upload/InfoBanner/zyjiaocheng/767/4cddfc8ac3be496aaf5cafdd77cbdb18.jpg)
我正在开发一个电子商务网站.
我正在尝试使用ajax请求设置购物车项目数量.
我懂了
if (isset($_POST['product_id']) && isset($_POST['new_quantity'])) {
global $woocommerce;
$woocommerce->cart->set_quantity($_POST['product_id'], $_POST['new_quantity']);
}
我也尝试过
WC()->....
但它不起作用并抛出此错误
Call to a member function needs_shipping() on null in
C:\xampp\htdocs\findandcandy\wp-content\plugins\woocommerce\includes\class-wc-cart.php on line 1514
是什么导致这种情况发生?
如果您需要我显示更多代码,请告诉我.
谢谢
解决方法:
好的,您现在可以更新购物车商品的数量而无需通过AJAX刷新(:
我的functions.php看起来像这样
//Enqueue Ajax Scripts
function enqueue_cart_qty_ajax() {
wp_register_script( 'cart-qty-ajax-js', get_template_directory_uri() . '/js/cart-qty-ajax.js', array( 'jquery' ), '', true );
wp_localize_script( 'cart-qty-ajax-js', 'cart_qty_ajax', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
wp_enqueue_script( 'cart-qty-ajax-js' );
}
add_action('wp_enqueue_scripts', 'enqueue_cart_qty_ajax');
function ajax_qty_cart() {
// Set item key as the hash found in input.qty's name
$cart_item_key = $_POST['hash'];
// Get the array of values owned by the product we're updating
$threeball_product_values = WC()->cart->get_cart_item( $cart_item_key );
// Get the quantity of the item in the cart
$threeball_product_quantity = apply_filters( 'woocommerce_stock_amount_cart_item', apply_filters( 'woocommerce_stock_amount', preg_replace( "/[^0-9\.]/", '', filter_var($_POST['quantity'], FILTER_SANITIZE_NUMBER_INT)) ), $cart_item_key );
// Update cart validation
$passed_validation = apply_filters( 'woocommerce_update_cart_validation', true, $cart_item_key, $threeball_product_values, $threeball_product_quantity );
// Update the quantity of the item in the cart
if ( $passed_validation ) {
WC()->cart->set_quantity( $cart_item_key, $threeball_product_quantity, true );
}
// Refresh the page
echo do_shortcode( '[woocommerce_cart]' );
die();
}
add_action('wp_ajax_qty_cart', 'ajax_qty_cart');
add_action('wp_ajax_nopriv_qty_cart', 'ajax_qty_cart');
我的cart-qty-ajax.js看起来像这样.
jQuery( function( $) {
$( document ).on( 'change', 'input.qty', function() {
var item_hash = $( this ).attr( 'name' ).replace(/cart\[([\w]+)\]\[qty\]/g, "$1");
var item_quantity = $( this ).val();
var currentVal = parseFloat(item_quantity);
function qty_cart() {
$.ajax({
type: 'POST',
url: cart_qty_ajax.ajax_url,
data: {
action: 'qty_cart',
hash: item_hash,
quantity: currentVal
},
success: function(data) {
$( '.view-cart-popup' ).html(data);
}
});
}
qty_cart();
});
});
内容总结
以上是互联网集市为您收集整理的php – Woocommerce | WordPress – WC_Cart :: set_quantity –全部内容,希望文章能够帮你解决php – Woocommerce | WordPress – WC_Cart :: set_quantity –所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。