Wie füge ich Konsolenprotokolldaten in den WooCommerce-Warenkorb ein?

Lesezeit: 5 Minuten

Benutzer-Avatar
Gruppe von Oceninfo

Ich verwende das Gadget eines Drittanbieters, in dem sie Live-Verfügbarkeit, Kosten und die Schaltfläche „Jetzt buchen“ bereitstellen. Wenn der Kunde auf die Schaltfläche „Jetzt buchen“ klickt, verwendet er sein Buchungs-Gadget, das ich ignorieren möchte.

Nachdem ich einige Google-Recherchen durchgeführt habe, kann ich den korrekten Titel und die korrekten Kosten in den Konsolenprotokollen abrufen, wenn einige auf die Schaltfläche „Jetzt buchen“ klicken.

$w.event.subscribe("item.book.click", function(item) { 
   console.log(item);
   console.log("Title " + item[3].Name + " (Date " + item[4].date  + ", Period " + item[4].period + ", Adults " + item[4].adults + ", Children " + item[4].children + ", Infants " + item[4].infants + ")");
   console.log("Price " + item[3].Availability.Cost);
});

WooCommerce einfaches Produkt Live-Demo: http://plugin.seminyak.holiday/product/the-layar/#/accom/66268

Klicke auf buchen Sie jetzt Schaltfläche und sehen Sie sich das Konsolenprotokoll an, das den Wert von Titel und Preis zurückgibt, aber wie Sie den Konsolendatenwert in Popup-Schaltflächen wie auslösen KAUFE JETZT & ARTIKEL IN DEN WARENKORB HINZUFÜGEN.

Wenn der Benutzer auf klickt ARTIKEL IN DEN WARENKORB HINZUFÜGEN es fügt Daten hinzu /Warenkorbseite + Warenkorb und wenn jemand anklickt KAUFE JETZT Schaltfläche, es nimmt Daten und leitet den Benutzer weiter /Kasse Seite mit Titel und Preis der Konsole

Wenn Sie Fragen haben, lassen Sie es mich bitte wissen.

  • Ich verstehe es nicht.

    – Reigel Gallarde

    2. November 2017 um 3:03 Uhr

  • Öffnen Sie den Link und Sie sehen die Schaltfläche In den Warenkorb, diese Schaltfläche ist die Woocommerce-Schaltfläche. Nachdem Sie auf die Seite gescrollt haben, sehen Sie einige Änderungsdaten oder die Schaltfläche Jetzt buchen. Wenn Sie auf die Schaltfläche Jetzt buchen klicken, wird ein Popup geöffnet, das enthält Artikel in den Warenkorb legen und jetzt buchen. Wenn Sie also auf die Schaltfläche Jetzt buchen klicken, sehen Sie in den Konsolenprotokollen Titel und Preis. Ich möchte diesen Titel und Preis, wenn jemand im Popup-Fenster auf die Schaltfläche Artikel zum Warenkorb hinzufügen oder auf Jetzt buchen klickt. Also möchte ich diesen Gadget-Wert von Drittanbietern im Woocommerce-Warenkorb.

    – Gruppe von Oceninfo

    2. November 2017 um 6:39 Uhr

  • kann speichern item auf eine globale Variable und greifen Sie darauf zu, indem Sie auf die Schaltfläche “Element hinzufügen” klicken …

    – Reigel Gallarde

    2. November 2017 um 9:31 Uhr

  • Einfach, Sie müssen nur das Klickereignis der Schaltfläche „Element hinzufügen“ abonnieren und die Werte anzeigen. Können Sie uns sagen, wie das Plugin heißt, das Sie verwenden?

    – Benutzer2924019

    2. November 2017 um 17:06 Uhr


  • Ich habe es gefunden. Das Klickereignis, das Sie abonnieren möchten, ist cart.add.click. Sehen Sie sich an, welchen Code Sie in frontend.js haben, und erstellen Sie eine Kopie für cart.add.click. Die Werte sollten gleich sein.

    – Benutzer2924019

    2. November 2017 um 17:25 Uhr

Wie in dieser Antwort getan:

Erfassen von javascript console.log?

Möglicherweise können Sie das Konsolenprotokoll erfassen, wenn die Seite geladen wird, und basierend auf der Ausgabe Ereignisse auslösen.

(function(){
      var oldLog = console.log;
      console.log = function (message) {
          if(message.indexOf("Price") !== -1){
            var price = message.split(' ')[1]
            // Do something with the price...
          }
          oldLog.apply(console, arguments);
       };
    })();

Möglicherweise müssen Sie etwas Kniffliges tun, da die Beschreibung und der Preis in zwei separaten Protokollen enthalten sind.

  • Ich kann Beschreibung und Preis auch in einem console.log zusammenführen, aber keine Ahnung, wie ich diese Daten in den Woocommerce-Warenkorb eingeben kann

    – Gruppe von Oceninfo

    7. November 2017 um 5:40 Uhr


  • Ach so, ich habe die Frage definitiv falsch verstanden. Könnten Sie für die Schaltfläche “Jetzt buchen” den Preis und den Titel mit URL-Parametern übergeben? window.location("/checkout?name=" + item[3].Name + "&price=" + item[3].Availability.Cost ) Oder wird die Checkout-Seite vollständig von Woocommerce verwaltet?

    – nbwoodward

    7. November 2017 um 11:13 Uhr


  • Ich habe das ausprobiert, aber es wird vollständig von WooCommerce verwaltet.

    – Gruppe von Oceninfo

    14. November 2017 um 7:17 Uhr

Vielen Dank für Ihre Unterstützung und Antwort. Nach viel Recherche habe ich mein Ergebnis mit dem folgenden Code erhalten.

Um das Endergebnis zu erzielen, muss ich das WC Fields Factory-Plugin installieren und den dynamischen Wert mithilfe des Konsolenprotokolls oder der Variablen def übergeben

Schritt 1: Verwenden Sie diesen Code unter der .js-Datei und stellen Sie sicher, dass er ausgelöst wird, wenn auf die Schaltfläche geklickt wird.

$w.event.subscribe("item.book.click", function(item) {
    $('[name="room_type"]')[0].value = item[3].Name;
    $('[name="date"]')[0].value = item[4].date;
    $('[name="nights"]')[0].value = item[4].period;
    $('[name="adults"]')[0].value = item[4].adults;
    $('[name="children"]')[0].value = item[4].children;
    $('[name="infants"]')[0].value = item[4].infants;
    $('[name="cost"]')[0].value = item[3].Availability.Cost;
    $('[name="add-to-cart"]')[0].click(); // Clicked on add to cart button
});

function.php-Code, um benutzerdefinierte Kostenwerte dynamisch zu erhalten.

/* Price Update Based On Plugin WC Field */

function calculate_cart_total( $cart_object ) {
    $additionalPrice = 0;

    foreach ( $cart_object as $key => $valueArray ) {
        if(is_array($valueArray)) {
            foreach ( $valueArray as $k => $value ) {
                if($value['wccpf_cost']) {
                    $additionalPrice = $value['wccpf_cost']['user_val'];
                }
            }
        }
    }

    foreach ( WC()->cart->get_cart() as $key => $value ) {
        if( method_exists( $value['data'], "set_price" ) ) {
            $value['data']->set_price( $additionalPrice );
        } else {
            $value['data']->price = ($additionalPrice );
        }     
    }
}
add_action( 'woocommerce_before_calculate_totals', 'calculate_cart_total', 99 );

/* before addto cart, clear cart values */
add_filter( 'woocommerce_add_to_cart_validation', 'woo_custom_add_to_cart_before' );

function woo_custom_add_to_cart_before( $cart_item_data ) {

    global $woocommerce;
    $woocommerce->cart->empty_cart();

    // Do nothing with the data and return
    return true;
}

Unter WC Fields Factory habe ich room_type, date, nights, adult, children, infants, cost Felder angelegt und der Onclick-Wert wird entsprechend dynamisch abgeholt.

1334330cookie-checkWie füge ich Konsolenprotokolldaten in den WooCommerce-Warenkorb ein?

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

Privacy policy