Question may be odd 🙁
I am trying to display some information about discount via shortcode in checkout page of woocommerce with hook of woocommerce_before_checkout_form
If i applied the coupon in cart page and visit to checkout noticed that hook messages shows up correct value of discount, but if i remove/add from checkout nothing shows up in that woocommerce_before_checkout_form
hook i tried by removing and add that hook but still shortcode value are not updating, i tested many times with following function can anyone have some work around ideas/suggestion would be great
<?php
/*
* Plugin Name: Hook Priority
*
*/
function add_my_shortcode() {
ob_start();
global $woocommerce;
echo $woocommerce->cart->discount_cart;
return ob_get_clean();
}
add_shortcode('my_shortcode', 'add_my_shortcode');
function add_message_in_checkout() {
var_dump(do_shortcode('[my_shortcode]'));
}
add_action('woocommerce_before_checkout_form', 'add_message_in_checkout');
function coupon_removed_function( $coupon_code ) {
remove_all_actions('woocommerce_before_checkout_form');
remove_shortcode('my_shortcode');
do_action('woocommerce_before_checkout_form');
}
add_action("woocommerce_removed_coupon", 'coupon_removed_function');
I tried with javascript to reload the page(refresh instance) and it is working, i don’t want to use that one unless there is no native wordpress/php solutions to overcome.
echo "<script type='text/javascript'>location.reload();</script>";
What currently happen in my side is
$10 discount i added from cart, then in checkout i can able to see $10 value but
if i remove the coupon from checkout it still showing $10 but it should be $0.
Thanks in Advance.
You can use jQuery to achieve your result.
Approach :
WooCommerce
fires a jQuery eventupdated_checkout
nearly every time when anything happens on to the checkout page. So you can use that event to achieve your desired result.Modification in your current code :
1) First of all add
JS
so that we can dojQuery
coding in that JS File.So after Modification your code will look something like this :
customPlugin.php
custom.js
Find my Inline comment in code to understand the code.
Let me know if you have any doubt.