forked from lukecav/code-snippets-wp-speed-up
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchange-add-to-cart-text-if-the-product-is-already-in-cart-in-woocommerce.code-snippets.json
1 lines (1 loc) · 2.88 KB
/
change-add-to-cart-text-if-the-product-is-already-in-cart-in-woocommerce.code-snippets.json
1
{"generator":"Code Snippets v2.13.3","date_created":"2020-01-11 02:49","snippets":[{"name":"Change Add to Cart Text if the Product is Already in Cart in WooCommerce","desc":"https:\/\/wordpress.stackexchange.com\/questions\/338728\/change-add-to-cart-text-if-a-product-is-in-cart-on-woocommerce\/","tags":["product","in","cart","text","woocommerce"],"scope":"global","code":"\/\/ Conditional function that checks if a product is in cart and return the correct button text\nfunction change_button_text( $product_id, $button_text ) {\n foreach( WC()->cart->get_cart() as $item ) {\n if( $product_id === $item['product_id'] ) {\n return __('Already in Cart. Add again?', 'woocommerce');\n }\n }\n return $button_text;\n}\n\n\/\/ Archive pages: For simple products (ajax add to cart button)\nadd_filter( 'woocommerce_product_add_to_cart_text', 'change_ajax_add_to_cart_button_text', 10, 2 );\nfunction change_ajax_add_to_cart_button_text( $button_text, $product ) {\n if ( $product->is_type('simple') ) {\n $button_text = change_button_text( $product->get_id(), $button_text );\n }\n return $button_text;\n}\n\n\/\/ Single product pages: Simple and external products\nadd_filter( 'woocommerce_product_single_add_to_cart_text', 'change_single_add_to_cart_button_text', 10, 2 );\nfunction change_single_add_to_cart_button_text( $button_text, $product ) {\n if ( ! $product->is_type('variable') ) {\n $button_text = change_button_text( $product->get_id(), $button_text );\n }\n return $button_text;\n}\n\n\/\/ Single product pages: Variable product and its variations\nadd_action( 'woocommerce_after_variations_form', 'action_after_variations_form_callback' );\nfunction action_after_variations_form_callback() {\n global $product;\n\n \/\/ Get the produc variation Ids for the variable product\n $children_ids = $product->get_visible_children();\n\n $ids_in_cart = [];\n\n \/\/ Loop through cart items\n foreach( WC()->cart->get_cart() as $item ) {\n if( in_array( $item['variation_id'], $children_ids ) ) {\n $ids_in_cart[] = $item['variation_id'];\n }\n }\n ?>\n <script type=\"text\/javascript\">\n jQuery(function($){\n var b = 'button.single_add_to_cart_button',\n t = '<?php echo $product->single_add_to_cart_text(); ?>';\n\n $('form.variations_form').on('show_variation hide_variation found_variation', function(){\n $.each(<?php echo json_encode($ids_in_cart); ?>, function(j, v){\n var i = $('input[name=\"variation_id\"]').val();\n if(v == i && i != 0 ) {\n $(b).html('<?php _e('Already in Cart. Add again?', 'woocommerce'); ?>');\n return false;\n } else {\n $(b).html(t);\n }\n });\n });\n });\n <\/script>\n <?php\n}","priority":"10"}]}