添加到购物车按钮将我带到产品页面

时间:2020-07-17 21:13:08

标签: wordpress woocommerce

我有此代码可以从商店中添加产品,但是当您单击以添加产品时,它们将被正确添加。问题是我不想转到产品页面。我要他留在商店里。

代码是这样的:

/**
 * Override loop template and show quantities next to add to cart buttons
 */
add_action('woocommerce_after_shop_loop_item',
           'woocommerce_template_single_add_to_cart', 30);
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
function quantity_inputs_for_woocommerce_loop_add_to_cart_link( $html, $product ) {
    if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
        $html = '<form action="' . esc_url( $product->add_to_cart_url() ) . '" class="cart" method="post" enctype="multipart/form-data">';
        $html .= woocommerce_quantity_input( array(), $product, false );
        $html .= '<button type="submit" class="button alt">' . esc_html( $product->add_to_cart_text() ) . '</button>';
        $html .= '</form>';
    }
    return $html;
}

帮助!

1 个答案:

答案 0 :(得分:0)

您需要使用jQuery和AJAX完成此操作。

  • 您需要event.preventDefault()表单。
  • 使用jQuery $.post()方法通过AJAX调用提交数据
  • 使用jQuery .append()方法修改购物车列表元素

关于如何获取提交数据所需的URL,可以将URL本地化为变量,然后按以下方式提取它们:

function theme_enqueue_scripts() {
    /**
     * frontend ajax requests.
     */
    wp_enqueue_script( 'frontend-ajax', JS_DIR_URI . 'frontend-ajax.js', array('jquery'), null, true );
    wp_localize_script( 'frontend-ajax', 'frontend_ajax_object',
        array( 
            'ajaxurl' => admin_url( 'admin-ajax.php' ),
            'add_to_cart_url' => $add_to_cart_url,
            'add_to_cart_text' => $add_to_cart_text,
        )
    );
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_scripts' );

P.S。您需要将购物车的URL和文本传递给theme_enqueue_scripts函数。