Aktualisierte Daten auf der Checkout-Seite von WooCommerce anzeigen

Lesezeit: 4 Minuten

Benutzeravatar von Vignesh Pichamani
Vignesh Pichamani

Frage ist vielleicht seltsam ­čÖü

Ich versuche, einige Informationen zum Rabatt ├╝ber den Shortcode in anzuzeigen Kassenseite von woocommerce mit Haken von woocommerce_before_checkout_form Wenn ich den Coupon auf der Warenkorbseite angewendet habe und zur Kasse gegangen bin, habe ich festgestellt, dass Hook-Nachrichten den korrekten Wert des Rabatts anzeigen, aber wenn ich aus der Kasse entferne/hinzuf├╝ge, wird darin nichts angezeigt woocommerce_before_checkout_form Hook Ich habe versucht, diesen Hook zu entfernen und hinzuzuf├╝gen, aber der Shortcode-Wert wird immer noch nicht aktualisiert. Ich habe viele Male mit der folgenden Funktion getestet. Kann jemand einige Ideen/Vorschl├Ąge umgehen, w├Ąre gro├čartig

<?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');

Ich habe versucht, die Seite mit Javascript neu zu laden (Aktualisierungsinstanz) und es funktioniert. Ich m├Âchte diese nicht verwenden, es sei denn, es gibt keine nativen WordPress/PHP-L├Âsungen, die ├╝berwunden werden m├╝ssen.

echo "<script type="text/javascript">location.reload();</script>";

Was derzeit in meiner Seite passiert ist

$10 Rabatt, den ich aus dem Einkaufswagen hinzugef├╝gt habe, dann kann ich an der Kasse einen Wert von $10 sehen, aber wenn ich den Gutschein aus der Kasse entferne, werden immer noch $10 angezeigt, aber es sollte $0 sein.

Vielen Dank im Voraus.

  • Warum ben├Âtigen Sie einen Shortcode, um einen Gutschein hinzuzuf├╝gen? Hast du einen Screenshot/Mockup wie es aussehen soll? Es f├Ąllt mir schwer, dem zu folgen, was du vorhast.

    ÔÇô Helgathewikinger

    13. November 2015 um 1:20 Uhr

Sie k├Ânnen verwenden jQuery um Ihr Ergebnis zu erzielen.

Sich n├Ąhern :

WooCommerce l├Âst ein jQuery-Ereignis aus updated_checkout fast jedes Mal, wenn etwas auf der Checkout-Seite passiert. So k├Ânnen Sie dieses Ereignis nutzen, um Ihr gew├╝nschtes Ergebnis zu erzielen.

Änderung in Ihrem aktuellen Code:

1) Zun├Ąchst hinzuf├╝gen JS damit wir tun k├Ânnen jQuery Codierung in dieser JS-Datei.

Nach der Änderung sieht Ihr Code also in etwa so aus:

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);

Finden Sie meinen Inline-Kommentar im Code, um den Code zu verstehen.

Lassen Sie mich wissen, wenn Sie irgendwelche Zweifel haben.

1390130cookie-checkAktualisierte Daten auf der Checkout-Seite von WooCommerce anzeigen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy