当前位置: 首页 > 知识库问答 >
问题:

WooCommerce AJAX添加到购物车,用于可变产品,仍然重定向到产品页面

尉迟冯浩
2023-03-14

以前,在将产品从存档页面添加到购物车后,页面会停留在相同的页面上(而不是重定向),但这只对一个简单的产品起作用。我要做的是为可变产品也启用这个特性(在存档页面显示产品选项,而不必先到产品页面)。

[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();
    }  
}

我已经做到了一半,但现在最大的问题是,在将可变产品和/或简单产品添加到cart之后,我会被重定向到product页面(产品添加到cart只是很好)。

之前:

<a href="/product-category/meats/?instock_products=in&#038;v=b718adec73e0&#038;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 &ldquo;Whole Pork Fillet (400G Up) Chilled&rdquo; to your cart" rel="nofollow">

之后:

<a href="/product-category/meats/?instock_products=in&#038;v=b718adec73e0&#038;add-to-cart=861" data-quantity="1" class="button" >

但不确定这是不是主要原因。感谢任何帮助。

共有1个答案

阎英朗
2023-03-14

如果您点击“添加成功后重定向到购物车页面”复选框会有帮助吗?

在Woocommerce>Settings>Products

 类似资料:
  • 我经营一家Woocommerce商店,该商店也提供免费产品(_常规价格=0)。客户必须选择数量并将其添加到购物车中,然后下订单才能收到产品。但这并不是Woocommerce的工作原理,它隐藏了所有价格为0的产品的“添加到购物车”链接。并且不会在购物车页面中显示它们。有没有解决这个问题的办法?非常感谢。

  • 我正在尝试LoicTheAztec的以下代码-添加到购物车并重定向到WooCommerce中的可变产品的签出 现在的问题是,每当我用产品编辑器中设置的默认变体单击Buy Now按钮时,代码都不起作用。 在这种情况下,立即购买URL变为.../?#0 我使用的主题是巴塞尔 有什么解决办法吗? LoicTheAztec尝试了代码。

  • 目标:在一个按钮点击中添加多个可变产品到购物车。 我试着将这段代码放入循环中,但它不起作用。 但是这种方法不能解决问题,因为我需要在一个按钮点击中添加几个产品变体。 所有的建议都将不胜感激。多谢了。

  • 我试图隐藏的添加到购物车按钮在所有的产品,除了一个可变的产品,我有。我已经尝试了以下留下变量选择选项(这是我想要的),但它隐藏了添加到购物车按钮(我不想要)。 有办法做到这一点吗? 我所有的产品都是简单的产品,除了这个单一的变量产品,所以也许有一个功能可以隐藏除了变量之外的所有简单产品的购物车按钮?

  • 我使用WooCommerce Wordpress中的以下代码,通过一个模板,使用add_to_cart($product_id)功能添加了许多产品。 现在,我希望通过此模板为每个产品添加自定义价格。现在购物车中的价格和数据库中的价格一样,但我想通过这一点添加我的自定义价格。有人能帮我做同样的事吗。谢谢

  • 在Woocommerce中,我需要在添加产品时跳过购物车页面,并直接重定向到仅限订阅产品类型的签出。 我在其他地方找到了下面的代码,它适用于跳过基于产品ID的购物车页面,但是我不能正确地使用产品类型(请参阅下面我尝试的内容)。 我尝试的:(它破坏了整个网站:变成了一个blanc页面) 有没有办法做到这一点?