Cookies y sesiones de WooCommerce – Obtenga los productos actuales en el carrito

Intento aprender las cookies de WooCommerce, para hacer cualquier función operando por productos que se agreguen al carrito. Escribí en consola document.cookie y obtengo estos datos:

 woocommerce_items_in_cart=1; woocommerce_cart_hash=500d17f6c010b62b25c3f52893be945d; 

Entiendo que la cookie ” woocommerce_cart_hash ” contiene los productos en el carrito, pero no entiendo cómo obtener el nombre del producto. Qué es 500d17f6c010b62b25c3f52893be945d

Cualquier ayuda sería apreciada.

One Solution collect form web for “Cookies y sesiones de WooCommerce – Obtenga los productos actuales en el carrito”

Como verá a continuación, woocommerce_cart_hash no contiene los productos en el carrito , porque hay una tercera coockie más compleja relacionada con la tabla de la base de datos de sesiones de WooCommerce .

La información no se almacena en la cookie, sino en la referencia correspondiente ubicada en la sesión de DB WooCommerce (consulte a continuación para obtener detalles)

También debe tener en cuenta que WordPress habilita algunos de almacenamiento de datos locales.

Los datos a continuación se toman de un caso de ejemplo real, donde un usuario no registrado agrega 2 productos al carrito.

1) Woocommerce activó 3 acciones cuando un usuario no registrado agrega algo al carrito:

  • woocommerce_cart_hash => 44ffcb32800e5b20cfbb080753d48408 (hash de seguridad / integridad)
  • woocommerce_items_in_cart => 1 (se establece en 1 cuando hay algo en el carrito)
  • wp_woocommerce_session_3413758cad2ada414127ffee7347e40f = ac5f880c99503169574ad996f35f85c5%7C%7C1469492696%7C%7C1469489096%7C%7C17e565032403642121f5ad12cfa72c41

2) Y en la tabla DB wp_woocommerce_sessions se genera una sesión al mismo tiempo:

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:{}";} 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

No puedo explicar todos los procesos centrales (para eso tendrá que buscar en los archivos principales de PHP).
Pero si observa wp_woocommerce_session_… valor de cookie verá que puede cortarlo con la subcadena %7C%7C , por lo que obtenemos 4 subcadenas para este valor de cookie:

  • ac5f880c99503169574ad996f35f85c5 (la misma referencia que en la DB session_key y session_value de la tabla wp_woocommerce_sessions ).
  • 1469492696 (la 1469492696 DB session_expiry de la tabla wp_woocommerce_sessions ).
  • 1469489096 (lo mismo arriba) .
  • 17e565032403642121f5ad12cfa72c41 (??? – Realmente no sé qué es esto para …)

Si el usuario vuelve y borra un artículo de su carrito:

  • woocommerce_cart_hash valor de la cookie woocommerce_cart_hash
  • woocommerce_items_in_cart valor de la cookie woocommerce_items_in_cart no cambia ya que un artículo permanece en el carrito.
  • wp_woocommerce_session_3413758cad2ada414127ffee7347e40f valor de la cookie no cambia.
  • DB wp_woocommerce_sessions TABLE , el ID de sesión 6 se ha eliminado / reemplazado por un nuevo ID de sesión generado que refleja los cambios del carrito (solo un producto) .

Entonces, en este punto, puede ver la relación entre las cookies y la tabla de wp_woocommerce_sessions datos de sesión wp_woocommerce_sessions que contiene todos los datos del carrito relacionados con usuarios no registrados.
(en una matriz u objeto multidimensional serializado de session_value ) .

Con la Clase WC_Cart podrás obtener estos datos.
También debe poder usar la syntax de WC()->cart en su código php …

Con Class WC_Session_Handler podrás manipular las sesiones por sí misma.

Y para terminar, la clase WC_Ajax se usa para cambios de carro.


Referencias:

  • Clase WC_Cart
  • Clase WC_Session_Handler
  • Clase WC_Ajax
  • Url de ruta de WordPress en el file de script js
  • Javascript carga el file CSV en una matriz
  • InfoBox (getElementById) para cada marcador - Google Maps API 3
  • TinyMCE popup agregar el button multimedia
  • Ruta al directory de templates de WordPress dentro de jQuery?
  • Obteniendo el contenido de WP Tinymce
  • Comprender la API JS de WordPress Customizer
  • Redirigir a los usuarios de IE8 a otra página
  • La request jQuery ajax funciona, la misma request AngularJS ajax no
  • Servicio de coloreado de código en línea
  • Error de JQuery: Unkeught TypeError: Object # <HTMLDocument> no tiene el método 'listo'
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.