2016-07-23 27 views
3

Ich versuche, die Cookies von WooCommerce zu lernen, für jede Funktion, die nach Produkten funktioniert die in den Warenkorb. Ich schrieb in der Konsole document.cookie Und ich bekomme diese Daten:WooCommerce-Cookies - Holen Sie sich die aktuellen Produkte in den Warenkorb

woocommerce_items_in_cart=1; 
woocommerce_cart_hash=500d17f6c010b62b25c3f52893be945d; 

Ich verstehe, dass das Cookie „woocommerce_cart_hash“ die Produkte im Warenkorb enthält, aber ich verstehe nicht, wie Sie den Namen des Produkts erhalten. Was ist das? 500d17f6c010b62b25c3f52893be945d

Jede Hilfe wäre willkommen.

Antwort

7

Wie Sie weiter unten sehen werden, tut woocommerce_cart_hash nicht enthält die Produkte im Warenkorb, weil es eine dritte komplexere coockie ist im Zusammenhang mit WooCommerce Sitzungen DB-Tabelle.

Die Daten ist nicht im Cookie gespeichert sich aber in einem entsprechenden Referenz befindet sich in DB WooCommerce Sitzung (Details siehe unten) ...

Sie haben auch zu beachten, dass Wordpress einige lokale ermöglichen Datenspeicher.

Die folgenden Daten stammen aus einem realen Beispielfall, bei dem ein nicht angemeldeter Benutzer 2 Produkte in den Warenkorb legt.

1) WooCommerce Set 3 coockies, wenn ein nicht Benutzer etwas in den Warenkorb angemeldet:

  • woocommerce_cart_hash =>44ffcb32800e5b20cfbb080753d48408(Sicherheit/Integrität Hash)
  • woocommerce_items_in_cart =>1(1 wenn etwas im Warenkorb ist)
  • wp_woocommerce_session_3413758cad2ada414127ffee7347e40f =>ac5f880c99503169574ad996f35f85c5%7C%7C1469492696%7C%7C1469489096%7C%7C17e565032403642121f5ad12cfa72c41(vollständig im Zusammenhang mit wp_woocommerce_sessions DB-Tabelle erstellt Sitzung zur gleichen Zeit, als diese Cookie)

2) und in DB-Tabelle wp_woocommerce_sessions eine Sitzung bei der generierte gleichzeitig:

session_id =>6
session_key =>ac5f880c99503169574ad996f35f85c5
session_value =>a:18:{s:4:"cart";s:600:"a:2:{s:32:"d82c8d1619ad8176d665453cfb2e55f0";a:9:{s:10:"product_id";i:53;s:12:"variation_id";i:0;s:9:"variation";a:0:{}s:8:"quantity";i:1;s:10:"line_total";d:35;s:8:"line_tax";i:0;s:13:"line_subtotal";i:35;s:17:"line_subtotal_tax";i:0;s:13:"line_tax_data";a:2:{s:5:"total";a:0:{}s:8:"subtotal";a:0:{}}}s:32:"a5bfc9e07964f8dddeb95fc584cd965d";a:9:{s:10:"product_id";i:37;s:12:"variation_id";i:0;s:9:"variation";a:0:{}s:8:"quantity";i:1;s:10:"line_total";d:18;s:8:"line_tax";i:0;s:13:"line_subtotal";i:18;s:17:"line_subtotal_tax";i:0;s:13:"line_tax_data";a:2:{s:5:"total";a:0:{}s:8:"subtotal";a:0:{}}}}";s:15:"applied_coupons";s:6:"a:0:{}";s:23:"coupon_discount_amounts";s:6:"a:0:{}";s:27:"coupon_discount_tax_amounts";s:6:"a:0:{}";s:21:"removed_cart_contents";s:6:"a:0:{}";s:19:"cart_contents_total";d:53;s:5:"total";d:53;s:8:"subtotal";i:53;s:15:"subtotal_ex_tax";i:53;s:9:"tax_total";i:0;s:5:"taxes";s:6:"a:0:{}";s:14:"shipping_taxes";s:6:"a:0:{}";s:13:"discount_cart";i:0;s:17:"discount_cart_tax";i:0;s:14:"shipping_total";N;s:18:"shipping_tax_total";i:0;s:9:"fee_total";i:0;s:4:"fees";s:6:"a:0:{}";}
session_expiry =>1469492696

Ich kann nicht alle Kernprozesse erklären (denn das müssen Sie in PHP-Core-Dateien suchen).
Aber wenn Sie schauen, um wp_woocommerce_session_…Cookie-Wert Sie werden sehen, dass Sie es mit %7C%7C Teilzeichenfolge schneiden kann, so dass wir hier 4 Substrings für diesen Cookie-Wert:

  • ac5f880c99503169574ad996f35f85c5 (gleiche Referenz, die in der DB session_key und session_value von Tabelle wp_woocommerce_sessions).
  • 1469492696 (die DB session_expiry von Tabelle wp_woocommerce_sessions).
  • 1469489096(gleiche Sache oben).
  • 17e565032403642121f5ad12cfa72c41 (???- Ich weiß nicht wirklich, was das ist für ...)

Wenn der Benutzer zurückkommen und ein Element in seinem Wagen löschen:

  • woocommerce_cart_hash Cookie Wert ändert
  • woocommerce_items_in_cart Cookie Wert ändert sich nicht, da ein Artikel im Warenkorb verbleibt.
  • wp_woocommerce_session_3413758cad2ada414127ffee7347e40f Cookie Wert ändert sich nicht.
  • DB wp_woocommerce_sessions TABLE, die Sitzungs-ID 6 wurde gelöscht/ersetzt durch eine neue erzeugt Sitzungs-ID ist, dass der Warenkorb spiegelt ändert (nur ein Produkt).

an dieser Stelle So können Sie die Beziehung zwischen Cookies und Session-DB-Tabelle wp_woocommerce_sessions sehen, die alle Warenkorb Daten enthält eingeloggte User
im Zusammenhang mit nicht (in einem session_valueserialisierten multidimensionales Array oder Objekt).

Mit Class WC_Cart können Sie diese Daten erhalten.
Sie sollten auch WC()->cart Syntax in Ihrem PHP-Code verwenden können ...

Mit Class WC_Session_Handler können Sie Sitzungen selbst bearbeiten.

Und zu Ende wird Class WC_Ajax für Warenkorbänderungen verwendet.


Referenzen:

+0

Vielen Dank für Ihre ausführliche Antwort! – ABE

+0

Der letzte Teil des Cookies "wp_woocommerce_session_ .." ist der Cookie-Hash. – lcssanches