栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

通过AJAX添加可变产品后更新WooCommerce购物车

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过AJAX添加可变产品后更新WooCommerce购物车

@helgatheviking-谢谢,我在发贴后几个小时发现了它。这也提供了巨大的帮助https://github.com/wp-
plugins/woocommerce-ajax-add-to-cart-for-variable-products/blob/master/js/add-
to-cart-variation.js。

这是我完成的解决方案,以防万一。

我将var_id和product_id存储为数据属性和数量,并且在这种情况下将var_name硬编码。.doodleVarButton是我应用于所有添加到购物车链接的可变项的类。

JS

jQuery( function( $ ) {    $( document ).on( 'click', '.doodleVarButton', function() {        var var_id = $(this).data("varid");        var product_id = $(this).data("prodid");        var data = { action: 'woocommerce_add_to_cart_variable_rc', product_id: product_id, quantity: 1, variation_id: var_id, variation: 'quantity-attribute'        };        jQuery.post( woocommerce_params.ajax_url, data, function( response ) { var fragments = response.fragments; if ( fragments ) {     $.each(fragments, function(key, value) {         $(key).replaceWith(value);     }); }        });    });

扩展的WC动作(放入functions.php中)

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 );    }        WC_AJAX::get_refreshed_fragments();    } else {        //$this->json_headers();        header('Content-Type: application/json');    $data = array(        'error' => true,        'product_url' => apply_filters(  'woocommerce_cart_redirect_after_error', get_permalink( $product_id ), $product_id )        );        echo json_enpre( $data );     }        die();}

然后-键 -WC_AJAX ::
get_refreshed_fragments调用了重要的woocommerce_header_add_to_cart_fragment函数
,您
可以 在其中更新购物车。我的购物车被模块化在一个单独的PHP文件中。

只要确保$ fragments [xxx]中的’xxx’与您的购物车代码的容器匹配即可。

function woocommerce_header_add_to_cart_fragment( $fragments ) {ob_start();include( dirname(__FILE__) . "/../views/checkout-bar.php");$fragments['div.checkout'] = ob_get_clean();return $fragments;}add_filter( 'woocommerce_add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment' );


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/393466.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号