WooCommerce cookies и сессии-получить текущие товары в корзину



Я пытаюсь изучить куки WooCommerce, ибо делаю любую функцию, работающую с продуктами, добавленными в корзину. Я написал в консоли document.cookie
И я получаю такие данные:



woocommerce_items_in_cart=1;
woocommerce_cart_hash=500d17f6c010b62b25c3f52893be945d;


Я понимаю, что печенье " woocommerce_cart_hash" содержит продукты в корзине, но я не понимаю, как получить название продукта. Что это такое 500d17f6c010b62b25c3f52893be945d

Любая помощь будет признательна.

840   1  

1 ответ:

Как вы увидите ниже, woocommerce_cart_hash не содержит продукты в корзине , потому что есть третий более сложный coockie, связанный с WooCommerce sessions DB table.

Данныехранятся не в самом файле cookie , а в соответствующей ссылке, расположенной в DB WooCommerce session(Подробнее см. ниже) ...

Вы также должны отметить, что WordPress включает некоторые локальные хранилища данных.

Данные ниже приведен реальный пример, когда незарегистрированный пользователь добавляет в корзину 2 товара.

1) Woocommerce устанавливает 3 coockies, когда незарегистрированный пользователь добавляет что-то в корзину:

  • woocommerce_cart_hash => 44ffcb32800e5b20cfbb080753d48408 (хэш безопасности / целостности)
  • woocommerce_items_in_cart => 1 (установите значение 1, когда что-то находится в корзине)
  • wp_woocommerce_session_3413758cad2ada414127ffee7347e40f => ac5f880c99503169574ad996f35f85c5%7C%7C1469492696%7C%7C1469489096%7C%7C17e565032403642121f5ad12cfa72c41 (полностью связан с wp_woocommerce_sessions таблица БД создавала сеанс одновременно с этим печенье)

2) и в таблице БДwp_woocommerce_sessions сеанс генерируется одновременно:

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

Я не могу объяснить все основные процессы (для этого вам нужно будет посмотреть в файлах ядра php).
Но если вы посмотрите на wp_woocommerce_session_… значение cookie вы увидите, что вы можете вырезать его с помощью %7C%7C подстрока, поэтому мы получаем здесь 4 подстроки для этого значения cookie:

  • ac5f880c99503169574ad996f35f85c5 (та же ссылка, что и в БД session_key и еще session_value из таблицы wp_woocommerce_sessions).
  • 1469492696 (БД session_expiry из таблицы wp_woocommerce_sessions).
  • 1469489096 (то же самое выше).
  • 17e565032403642121f5ad12cfa72c41 (??? - Я действительно не знаю, для чего это...)

Если пользователь вернется и удалит один элемент в своем тележка:

  • woocommerce_cart_hash cookie изменения значений
  • woocommerce_items_in_cart значение cookie не изменяется, поскольку товар остается в корзине.
  • wp_woocommerce_session_3413758cad2ada414127ffee7347e40f значение cookie не изменяется.
  • DB wp_woocommerce_sessions TABLE , идентификатор сеанса 6 был удален / заменен на Новый сгенерированный идентификатор сеанса, который отражает изменения корзины (только один продукт).

Так вот в чем дело точка вы можете увидеть связь между файлами cookie и таблицей БД сеансов wp_woocommerce_sessions, которая содержит все данные корзины, относящиеся к незарегистрированным пользователям
(В a session_value сериализованный многомерный массив или объект) .

С класс WC_Cart вы сможете получить эти данные.
вы также должны уметь использовать синтаксис WC()->cart в вашем php коде ...

С класс WC_Session_Handler вы сможете манипулировать сеансами самой.

И закончить, класс WC_Ajax используется для смены карт.


Ссылки:

Comments

    Ничего не найдено.