php – Woocommerce | WordPress – WC_Cart :: set_quantity –
发布时间:2020-12-13 22:26:01 所属栏目:PHP教程 来源:网络整理
导读:我正在开发一个电子商务网站. 我正在尝试使用ajax请求设置购物车项目数量. 我懂了 if (isset($_POST['product_id']) isset($_POST['new_quantity'])) { global $woocommerce; $woocommerce-cart-set_quantity($_POST['product_id'],$_POST['new_quantity']);
我正在开发一个电子商务网站.
我正在尝试使用ajax请求设置购物车项目数量. 我懂了 if (isset($_POST['product_id']) && isset($_POST['new_quantity'])) { global $woocommerce; $woocommerce->cart->set_quantity($_POST['product_id'],$_POST['new_quantity']); } 我也尝试过 WC()->.... 但它不起作用并抛出此错误
是什么导致这种情况发生? 如果您需要我显示更多代码,请告诉我. 解决方法
好的,您现在可以更新购物车商品的数量而无需通过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(); }); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |