[英]WooCommerce AJAX Add to Cart for Variable products, still redirecting to product page
以前,將產品從存檔頁面添加到購物車后,頁面停留在同一頁面上(不重定向),但這僅適用於簡單產品。 我想做的是也為可變產品啟用此功能(在存檔頁面上顯示產品選項,而不必先進入產品頁面)。
基於此鏈接:
[WooCommerce 3.0+] Ajax添加到購物車中的可變產品存檔頁面
使用此代碼:
if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
if ( ! function_exists( 'woocommerce_template_loop_add_to_cart' ) ) {
function woocommerce_template_loop_add_to_cart() {
global $product;
if ($product->get_type() == "variable" ) {
woocommerce_variable_add_to_cart();
}
else {
wc_get_template( 'loop/add-to-cart.php' );
}
}
}
function ajax_add_to_cart_script() {
wp_enqueue_script( 'add-to-cart-variation', plugins_url() . '/woocommerce-ajax-add-to-cart-variable-products/js/add-to-cart-variation.js', array('jquery'), '', true );
wp_localize_script( 'add-to-cart-variation', 'AddToCartAjax', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
));
}
add_action( 'wp_enqueue_scripts', 'ajax_add_to_cart_script' );
add_action( 'wp_ajax_woocommerce_add_to_cart_variable_rc', 'woocommerce_add_to_cart_variable_rc_callback' );
function woocommerce_add_to_cart_variable_rc_callback() {
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_POST['product_id'] ) );
$quantity = empty( $_POST['quantity'] ) ? 1 : apply_filters( 'woocommerce_stock_amount', $_POST['quantity'] );
$variation_id = $_POST['variation_id'];
$variation = $_POST['variation'];
$passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity );
if ( $passed_validation && WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation ) ) {
do_action( 'woocommerce_ajax_added_to_cart', $product_id );
if ( get_option( 'woocommerce_cart_redirect_after_add' ) == 'yes' ) {
wc_add_to_cart_message( $product_id );
}
$this->get_refreshed_fragments();
} else {
$this->json_headers();
$data = array(
'error' => true,
'product_url' => apply_filters( 'woocommerce_cart_redirect_after_error', get_permalink( $product_id ), $product_id )
);
echo json_encode( $data );
}
die();
}
}
我已經中途了,但是現在最大的問題是在將可變產品和/或簡單產品添加到購物車后,我被重定向到產品頁面(將產品添加到購物車就很好了)。
我不確定這是否是問題,但是在添加上述代碼前后,我發現HTML的不同之處在於:
之前:
<a href="/product-category/meats/?instock_products=in&v=b718adec73e0&add-to-cart=861" data-quantity="1" class="button product_type_simple add_to_cart_button ajax_add_to_cart" data-product_id="861" data-product_sku="" aria-label="Add “Whole Pork Fillet (400G Up) Chilled” to your cart" rel="nofollow">
后:
<a href="/product-category/meats/?instock_products=in&v=b718adec73e0&add-to-cart=861" data-quantity="1" class="button" >
不知道這是否是主要原因。 任何幫助表示贊賞。
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.