-
-
Save themkvz/3379bbe35e3ea9b1e396bb2f88341974 to your computer and use it in GitHub Desktop.
WooCommerce mnicart qty update
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_action('woocommerce_widget_shopping_cart_before_buttons','ask_woo_mini_cart_before_buttons' ); | |
function ask_woo_mini_cart_before_buttons(){ | |
wp_nonce_field( 'woocommerce-cart' ); | |
?> | |
<div class="submit-button"> | |
<input type="submit" class="button" name="update_cart" value="<?php esc_attr_e('Uppdatera varukorg', 'tidymerch'); ?>"/> | |
</div> | |
<?php | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Mini-cart | |
* | |
* Contains the markup for the mini-cart, used by the cart widget. | |
* | |
* This template can be overridden by copying it to yourtheme/woocommerce/cart/mini-cart.php. | |
* | |
* HOWEVER, on occasion WooCommerce will need to update template files and you | |
* (the theme developer) will need to copy the new files to your theme to | |
* maintain compatibility. We try to do this as little as possible, but it does | |
* happen. When this occurs the version of the template file will be bumped and | |
* the readme will list any important changes. | |
* | |
* @see https://docs.woocommerce.com/document/template-structure/ | |
* @author WooThemes | |
* @package WooCommerce/Templates | |
* @version 3.3.0 | |
*/ | |
if ( ! defined( 'ABSPATH' ) ) { | |
exit; | |
} | |
do_action( 'woocommerce_before_mini_cart' ); ?> | |
<div class="shop_table cart"> | |
<?php if ( ! WC()->cart->is_empty() ) : ?> | |
<form action="<?php echo esc_url(wc_get_cart_url()); ?>" method="post"> | |
<ul class="woocommerce-mini-cart cart_list product_list_widget <?php echo esc_attr( $args['list_class'] ); ?>"> | |
<?php | |
do_action( 'woocommerce_before_mini_cart_contents' ); | |
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { | |
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); | |
$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key ); | |
if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_widget_cart_item_visible', true, $cart_item, $cart_item_key ) ) { | |
$product_name = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key ); | |
$thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key ); | |
$product_price = apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key ); | |
$product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key ); | |
?> | |
<li class="woocommerce-mini-cart-item <?php echo esc_attr( apply_filters( 'woocommerce_mini_cart_item_class', 'mini_cart_item', $cart_item, $cart_item_key ) ); ?>"> | |
<?php | |
echo apply_filters( 'woocommerce_cart_item_remove_link', sprintf( | |
'<a href="%s" class="remove remove_from_cart_button" aria-label="%s" data-product_id="%s" data-cart_item_key="%s" data-product_sku="%s">×</a>', | |
esc_url( wc_get_cart_remove_url( $cart_item_key ) ), | |
__( 'Remove this item', 'woocommerce' ), | |
esc_attr( $product_id ), | |
esc_attr( $cart_item_key ), | |
esc_attr( $_product->get_sku() ) | |
), $cart_item_key ); | |
?> | |
<?php if ( ! $_product->is_visible() ) : ?> | |
<?php echo str_replace( array( 'http:', 'https:' ), '', $thumbnail ) . $product_name . ' '; ?> | |
<?php else : ?> | |
<a href="<?php echo esc_url( $product_permalink ); ?>"> | |
<?php echo str_replace( array( 'http:', 'https:' ), '', $thumbnail ) . $product_name . ' '; ?> | |
</a> | |
<?php endif; ?> | |
<?php echo wc_get_formatted_cart_item_data( $cart_item ); ?> | |
<?php | |
if ($_product->is_sold_individually()) { | |
$product_quantity = sprintf('<input type="hidden" name="cart[%s][qty]" value="1" />', $cart_item_key); | |
} else { | |
$input_args = array( | |
'input_name' => "cart[{$cart_item_key}][qty]", | |
'input_value' => $cart_item['quantity'], | |
'max_value' => $_product->backorders_allowed() ? '' : $_product->get_stock_quantity(), | |
'min_value' => '0' | |
); | |
$product_quantity = woocommerce_quantity_input($input_args, $_product, false); | |
} | |
echo apply_filters('woocommerce_cart_item_quantity', $product_quantity, $cart_item_key, $cart_item); | |
?> | |
<div class="tidy-minicart-price"><?php echo $product_price;?></div> | |
</li> | |
<?php | |
} | |
} | |
do_action( 'woocommerce_mini_cart_contents' ); | |
?> | |
</ul> | |
<p class="woocommerce-mini-cart__total total"><strong><?php _e( 'Subtotal', 'woocommerce' ); ?>:</strong> <?php echo WC()->cart->get_cart_subtotal(); ?></p> | |
<?php do_action( 'woocommerce_widget_shopping_cart_before_buttons' ); ?> | |
</form> | |
<p class="woocommerce-mini-cart__buttons buttons"><?php do_action( 'woocommerce_widget_shopping_cart_buttons' ); ?></p> | |
<?php else : ?> | |
<p class="woocommerce-mini-cart__empty-message"><?php _e( 'No products in the cart.', 'woocommerce' ); ?></p> | |
<?php endif; ?> | |
</div> | |
<?php do_action( 'woocommerce_after_mini_cart' ); ?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jQuery(document).on('submit', '.shop_table.cart form', function() { | |
updateMiniCartQuantity(); | |
return false; | |
}); | |
function updateMiniCartQuantity() { | |
var cartForm = jQuery('.shop_table.cart form'); | |
jQuery('<input />').attr('type', 'hidden') | |
.attr('name', 'update_cart') | |
.attr('value', 'Update Cart') | |
.appendTo(cartForm); | |
var formData = cartForm.serialize(); | |
jQuery.ajax({ | |
type: cartForm.attr('method'), | |
url: cartForm.attr('action'), | |
data: formData, | |
dataType: 'html', | |
success: function(response) { | |
console.log(response); | |
let wc_cart_fragment_url = (wc_cart_fragments_params.wc_ajax_url).replace("%%endpoint%%", "get_refreshed_fragments"); | |
jQuery.ajax({ | |
type: 'post', | |
url: wc_cart_fragment_url, | |
success: function(response) { | |
console.log(response); | |
var mini_cart_wrapper = jQuery('.widget_shopping_cart_content'); | |
var parent = mini_cart_wrapper.parent(); | |
mini_cart_wrapper.remove(); | |
parent.append(response.fragments['div.widget_shopping_cart_content']); | |
}, | |
complete: function() { | |
cartForm = jQuery('.shop_table.cart form'); | |
} | |
}); | |
} | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment