【问题标题】:How to add a custom AJAX decrease button in Woocommerce product loop?如何在 Woocommerce 产品循环中添加自定义 AJAX 减少按钮?
【发布时间】:2019-11-01 11:48:39
【问题描述】:

我在 Woocommerce 产品循环中添加了加号和减号按钮,加号按钮工作正常。 现在我想在用户点击减号按钮时删除产品。

这里是添加产品和增加产品数量的自定义按钮-

function wc_shop_demo_button() {
    global $product;
    echo '<div class="button product_type_simple add_to_cart_button ajax_add_to_cart"  data-product_id=' . $product->get_id() . ' rel="nofollow" >Plus</div>';
    echo '<div class="minus button"  data-product_id=' . $product->get_id() . ' rel="nofollow" >Minus</div>';
}
add_action( 'woocommerce_after_shop_loop_item', 'wc_shop_demo_button', 20 );
add_action( 'woocommerce_after_add_to_cart_button', 'wc_shop_demo_button', 20 );

我的问题是,是否可以通过使用 AJAX 的自定义按钮来减少购物车中的产品数量? 如果有怎么办?

【问题讨论】:

    标签: php wordpress function woocommerce cart


    【解决方案1】:

    在 WooCommerce 商店页面中显示加号和减号数量按钮:将此代码放入活动主题的 functions.php 中(并删除您的代码)。

     /**
     * Add quantity field on the shop page.
     */
    function custom_shop_page_add_quantity_field() {
      /** @var WC_Product $product */
      $product = wc_get_product( get_the_ID() );
      if ( ! $product->is_sold_individually() && 'variable' != $product->get_type() && $product->is_purchasable() ) {
         woocommerce_quantity_input( array( 'min_value' => 1, 'max_value' => $product->backorders_allowed() ? '' : $product->get_stock_quantity() ) );
      }
    }
    add_action( 'woocommerce_after_shop_loop_item', 'custom_shop_page_add_quantity_field', 12 );
    /**
     * Add required JavaScript.
     */
    function custom_shop_page_quantity_add_to_cart_handler() {
      wc_enqueue_js( '
         $(".woocommerce .products").on("click", ".quantity input", function() {
            return false;
         });
         $(".woocommerce .products").on("change input", ".quantity .qty", function() {
            var add_to_cart_button = $(this).parents( ".product" ).find(".add_to_cart_button");
            // For AJAX add-to-cart actions
            add_to_cart_button.data("quantity", $(this).val());
            // For non-AJAX add-to-cart actions
            add_to_cart_button.attr("href", "?add-to-cart=" + add_to_cart_button.attr("data-product_id") + "&quantity=" + $(this).val());
         });
         // Trigger on Enter press
         $(".woocommerce .products").on("keypress", ".quantity .qty", function(e) {
            if ((e.which||e.keyCode) === 13) {
               $( this ).parents(".product").find(".add_to_cart_button").trigger("click");
            }
         });
      ' );
    }
    add_action( 'init', 'custom_shop_page_quantity_add_to_cart_handler' );
    

    【讨论】:

    • 兄弟,你能告诉我如何在产品循环中做到这一点吗?
    • 它不工作,兄弟:(什么也没发生。我也尝试通过删除 - if (!is_product()) return; 但没有运气
    • 我再次编辑了我的代码。它应该工作。我已经测试过了。
    猜你喜欢
    • 2019-03-31
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2018-12-10
    • 2020-09-01
    • 2018-02-18
    • 1970-01-01
    相关资源
    最近更新 更多