When you're running an online store using WooCommerce, making the purchasing process as seamless as possible is crucial. One effective way to do this is by adding a "Buy Now" button that allows customers to directly purchase a product without navigating through multiple pages. This blog will walk you through creating a WooCommerce AJAX "Buy Now" button using the provided code snippets.
First, you need to add a custom "Buy Now" button on your WooCommerce product pages. We'll do this by hooking into the woocommerce_after_add_to_cart_button action, which places our button right after the standard "Add to Cart" button.
Here's the PHP code snippet:
add_action( 'woocommerce_after_add_to_cart_button', 'add_content_after_addtocart' ); function add_content_after_addtocart() { $current_product_id = get_the_ID(); $product = wc_get_product( $current_product_id ); if( $product->is_type( 'simple' ) ){ echo '<button data-id="'.$current_product_id.'" class="buy-now button"><i class="matico-icon-toys"></i>'.__('Buy Now', 'woocommerce').'</button>'; } }
Explanation:
Next, you need to enqueue the script in your theme to ensure it's loaded properly on your WooCommerce pages. Here's how to do it:
wp_enqueue_script('matico-child-script', get_stylesheet_directory_uri() . '/assets/js/script.js', array( 'jquery', 'scrollfix-script' ), $matico_version, true); wp_localize_script( 'matico-child-script', 'matico_child_script_obj', array( 'checkout_page_url' => wc_get_checkout_url(), ) );
Explanation:
Finally, we'll handle the button click event using jQuery. The jQuery script sends an AJAX request to WooCommerce, which adds the product to the cart and then redirects the user directly to the checkout page.
Here's the jQuery code snippet:
(function ($) { var MaticoChildThemeConfig = { init: function () { this.bindEvents(); }, bindEvents: function () { $(document).on('click', '.buy-now', this.handleBuyNowClick); }, handleBuyNowClick: function (event) { event.preventDefault(); var $button = $(this), quantity = parseFloat($button.closest('.quantity').find('.qty').val()) || 1, productID = $button.data('id'); var data = { product_id: productID, quantity: quantity, }; $.ajax({ type: 'POST', url: wc_add_to_cart_params.wc_ajax_url.toString().replace('%%endpoint%%', 'add_to_cart'), data: data, dataType: 'json', beforeSend: function () { $button.addClass('loading'); }, success: function (res) { if (res.error && res.product_url) { window.location.href = res.product_url; } else { window.location.href = matico_child_script_obj.checkout_page_url; } } }); } }; MaticoChildThemeConfig.init(); })(jQuery);
Explanation:
By implementing the above steps, you can create a "Buy Now" button that streamlines the purchasing process for your customers. This feature is particularly useful in boosting conversions by reducing the number of clicks and pages a customer needs to navigate before completing a purchase.
The above is the detailed content of How to Implement a WooCommerce AJAX Direct \'Buy Now\' Button. For more information, please follow other related articles on the PHP Chinese website!