Sie können jQuery verwenden, um Ihr Ergebnis zu erzielen.
Ansatz:
WooCommerce
Brände ein jQuery-Ereignis updated_checkout
fast jedes Mal, wenn etwas an der Kasse Seite geschieht auf. Sie können dieses Ereignis also verwenden, um das gewünschte Ergebnis zu erzielen.
Änderung in Ihrem aktuellen Code:
1) Zunächst einmal hinzufügen JS
so dass wir jQuery
Codierung in dieser JS-Datei tun.
So nach Änderung Ihr Code wie folgt aussehen:
customPlugin.php
<?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]'));
/*Modification*/
echo '<div class="coupon_value">'.do_shortcode('[my_shortcode]').'</div>'; // Here I have modified it to give class and update value
}
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');
/*Modifications starts from here*/
/*Action to enqueue Jjavascript in Footer*/
add_action("wp_footer", 'enqueue_plugin_script');
function enqueue_plugin_script(){
/*Enqueue Custom Javascript to use*/
wp_enqueue_script('custom-script', plugin_dir_url(__FILE__).'custom.js', array('jquery'), '1.0.0', true);
/*Localize parameter to use in JS file*/
wp_localize_script('custom-script', 'custom_values', array(
'ajaxurl' => admin_url('admin-ajax.php'),
'token' => wp_create_nonce('token')
));
}
/*AJAX Event to check for discount*/
add_action('wp_ajax_check_for_coupon', 'check_for_coupon');
add_action('wp_ajax_nopriv_check_for_coupon', 'check_for_coupon');
function check_for_coupon(){
global $woocommerce;
$send_json = array();
$send_json = array('success'=>false);
if($woocommerce->cart->discount_cart){
$send_json = array('success'=>true, 'discount'=>$woocommerce->cart->discount_cart);
}
wp_send_json($send_json);
die();
}
custom.js
/*
* custom.js
* @author : Rohil Mistry
*/
(function($){
$(document).ready(function(){
/*updated_checkout event*/
$(document.body).on('updated_checkout', function(){
/*Make an AJAX call on updated_checkout event*/
$.ajax({
type: 'POST',
url: custom_values.ajaxurl,
data: {action:'check_for_coupon'},
success: function(result) {
console.info(result);
if(result.success){
$(".coupon_value").html(result.discount);
}
else{
$(".coupon_value").html('');
}
}
});
});
});
})(jQuery);
in Code mein Inline Kommentar finden verstehe den Code.
Lassen Sie mich wissen, wenn Sie irgendwelche Zweifel haben.
Warum benötigen Sie einen Shortcode, um einen Gutschein hinzuzufügen? Hast du einen Screenshot, wie er aussehen soll? Mir fällt es schwer zu verfolgen, wonach du suchst. – helgatheviking