-
-
Save woogists/c5e5d73bb4d7d44f5642313b8094937c to your computer and use it in GitHub Desktop.
@lgdelai the add_to_cart
shortcode is rendered by WooCommerce with this function:
includes/class-wc-shortcodes.php#L305-L368 and the woocommerce_loop_add_to_cart_link
hook is called in the loop/add-to-cart.php template called by that very function.
This means that if this doesn't work in the list generated by the ConventViews plugin, they are loading the shortcode before your filter is applied. You could try putting the filter in an mu-plugin
to see if that resolves the issue.
@Spreeuw thanks for your explanations.
Could you explain better what the mu-plugin
you mentioned is about?
I didn't quite understand what I need to try to do.
it's an alternative method of adding custom code to your sites (compared to the 'traditional' method of using functions.php in your theme): mu-plugins load before regular plugins. This was the first google result:
https://wordpress.org/support/article/must-use-plugins/
but there are many other resources and tutorials.
Alternatively you could try the Code Snippets plugin, which also loads filters before functions.php and most plugins.
It's still possible the root cause lies somewhere else (for example, when the woocommerce_loop_add_to_cart_link
is missing from the loop/add-to-cart.php
template of your theme), or something else sepecific to ContentViews, but the developers of that plugin should be able to help with this. I'm not with WooCommerce and not the author of the original gist, just provided an alternative solution.
@Spreeuw
I find a plugin who works fine in all situations and is ajax compatible.
https://br.wordpress.org/plugins/quantity-field-on-shop-page-for-woocommerce/
He is capable of show quantity field a side of add to cart button.
Thanks all for help.
I am using
/** * Override loop template and show quantities next to add to cart buttons */add_filter( 'woocommerce_loop_add_to_cart_link', 'quantity_inputs_for_woocommerce_loop_add_to_cart_link', 10, 2 );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;}
The number picker works fine but it overrides the ajax add to cart to throw to the top of the page instead of adding: View cart
Can anyone suggest a change to code?
Hey @Spreeuw
Using the Original code of this post, the Ajax Button stop working.
I Found other way who work with Ajax.
But they cause another problem, with this other solution, the "- +" button doesn't apear on product list showed by a ContentViews Plugin.
The developers of ContentViews told me that:
And our plugin uses the "add_to_cart" shortcode of WooCommerce to show the "Add to cart" button.
What change can I make so that new code to displays the quantities field in contentviews plugin too?
See code: (Works with Ajax, but doesn't display the quantity field in ContentViews).
https://gist.github.com/webaware/6260468