Skip to content

Instantly share code, notes, and snippets.

@beamkiller
Created February 27, 2023 13:29
Show Gist options
  • Save beamkiller/41412128674b11104d583664d1cfa565 to your computer and use it in GitHub Desktop.
Save beamkiller/41412128674b11104d583664d1cfa565 to your computer and use it in GitHub Desktop.
Gold-shop.sk - UX Builder Products element Quantity issue
<?php
add_filter( 'woocommerce_loop_add_to_cart_link', 'quantity_inputs_for_loop_ajax_add_to_cart', 10, 2 );
/**
* Add qty button and ajax to add to cart
* @link https://stackoverflow.com/questions/48722178/add-a-quantity-field-to-ajax-add-to-cart-button-on-woocommerce-shop-page
*
*/
function quantity_inputs_for_loop_ajax_add_to_cart( $html, $product ) {
if ( $product && $product->is_type( 'simple' ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
// Get the necessary classes
$class = implode( ' ', array_filter( array(
'button',
'product_type_' . $product->get_type(),
$product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
$product->supports( 'ajax_add_to_cart' ) ? 'ajax_add_to_cart' : '',
) ) );
if (!isset($_GET['wc-ajax']) || $_GET['wc-ajax'] !== 'dgwt_wcas_result_details') {
/* $html = ''; */
// Embedding the quantity field to Ajax add to cart button
$html = sprintf( '%s<div class="add-to-cart-button"><a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s">%s</a></div>',
woocommerce_quantity_input( array(), $product, false ),
esc_url( $product->add_to_cart_url() ),
esc_attr( isset( $quantity ) ? $quantity : 1 ),
esc_attr( $product->get_id() ),
esc_attr( $product->get_sku() ),
esc_attr( isset( $class ) ? $class : 'button' ),
esc_html( $product->add_to_cart_text() )
);
/* $html .= ''; */
}
}
return $html;
}
add_action( 'wp_footer' , 'archives_quantity_fields_script' );
function archives_quantity_fields_script(){
?>
<script type='text/javascript'>
jQuery(function($){
// Update data-quantity
$(document.body).on('click input', 'input.qty', function() {
$(this).parent().parent().find('a.ajax_add_to_cart').attr('data-quantity', $(this).val());
// (optional) Removing other previous "view cart" buttons
$(".added_to_cart").remove();
});
});
</script>
<?php
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment