WooCommerce считает количество активных корзин для конкретного продукта

Я знаю, что могу сосчитать количество товаров, которые есть у пользователя в его активной корзине WC()->cart->get_cart_contents_count(), Но это только подсчитывает количество товаров, которые текущий пользователь имеет в своей корзине.
Я хочу показать, как часто конкретный продукт в настоящее время добавляется в корзину всех пользователей в сумме, включая пользователей с учетной записью и гостевых пользователей. Я хочу добиться такого результата, как «у клиентов X есть Продукт Y в настоящее время в их корзинах».

Поэтому я думаю, что мне нужно собрать данные из таблицы woocommerce_sessions, потому что в таблице usermeta хранятся только необходимые значения для пользователей с учетной записью.

Я пробовал с $array = $wpdb->get_results("select session_value from ".$wpdb->prefix."woocommerce_sessions"); который дает мне всю информацию, но массив выглядит так:

Array ( [0] => stdClass Object ( [session_value] => a:12:{s:4:"cart";s:412:"a:1:{s:32:"2838023a778dfaecdc212708f721b788";a:11:{s:3:"key";s:32:"2838023a778dfaecdc212708f721b788";s:10:"product_id";i:51;s:12:"variation_id";i:0;s:9:"variation";a:0:{}s:8:"quantity";i:1;s:9:"data_hash";s:32:"b5c1d5ca8bae6d4896cf1807cdf763f0";s:13:"line_tax_data";a:2:{s:8:"subtotal";a:0:{}s:5:"total";a:0:{}}s:13:"line_subtotal";d:100;s:17:"line_subtotal_tax";i:0;s:10:"line_total";d:100;s:8:"line_tax";i:0;}}";s:11:"cart_totals";s:408:"a:15:{s:8:"subtotal";s:6:"100.00";s:12:"subtotal_tax";d:0;s:14:"shipping_total";s:4:"0.00";s:12:"shipping_tax";d:0;s:14:"shipping_taxes";a:0:{}s:14:"discount_total";d:0;s:12:"discount_tax";d:0;s:19:"cart_contents_total";s:6:"100.00";s:17:"cart_contents_tax";d:0;s:19:"cart_contents_taxes";a:0:{}s:9:"fee_total";s:4:"0.00";s:7:"fee_tax";d:0;s:9:"fee_taxes";a:0:{}s:5:"total";s:6:"100.00";s:9:"total_tax";d:0;}";s:15:"applied_coupons";s:6:"a:0:{}";s:22:"coupon_discount_totals";s:6:"a:0:{}";s:26:"coupon_discount_tax_totals";s:6:"a:0:{}";s:21:"removed_cart_contents";s:6:"a:0:{}";s:22:"shipping_for_package_0";s:417:"a:2:{s:12:"package_hash";s:40:"wc_ship_56551d06e63bb366b9363da1321e7c51";s:5:"rates";a:1:{s:20:"legacy_free_shipping";O:16:"WC_Shipping_Rate":2:{s:7:"*data";a:6:{s:2:"id";s:20:"legacy_free_shipping";s:9:"method_id";s:20:"legacy_free_shipping";s:11:"instance_id";i:0;s:5:"label";s:13:"Free Shipping";s:4:"cost";s:4:"0.00";s:5:"taxes";a:0:{}}s:12:"*meta_data";a:1:{s:5:"Items";s:26:"Pink Down Jacket × 1";}}}}";s:25:"previous_shipping_methods";s:48:"a:1:{i:0;a:1:{i:0;s:20:"legacy_free_shipping";}}";s:23:"chosen_shipping_methods";s:38:"a:1:{i:0;s:20:"legacy_free_shipping";}";s:22:"shipping_method_counts";s:14:"a:1:{i:0;i:1;}";s:10:"wc_notices";N;s:8:"customer";s:687:"a:26:{s:2:"id";s:1:"0";s:13:"date_modified";s:0:"";s:8:"postcode";s:0:"";s:4:"city";s:0:"";s:9:"address_1";s:0:"";s:7:"address";s:0:"";s:9:"address_2";s:0:"";s:5:"state";s:0:"";s:7:"country";s:2:"DE";s:17:"shipping_postcode";s:0:"";s:13:"shipping_city";s:0:"";s:18:"shipping_address_1";s:0:"";s:16:"shipping_address";s:0:"";s:18:"shipping_address_2";s:0:"";s:14:"shipping_state";s:0:"";s:16:"shipping_country";s:2:"DE";s:13:"is_vat_exempt";s:0:"";s:19:"calculated_shipping";s:0:"";s:10:"first_name";s:0:"";s:9:"last_name";s:0:"";s:7:"company";s:0:"";s:5:"phone";s:0:"";s:5:"email";s:0:"";s:19:"shipping_first_name";s:0:"";s:18:"shipping_last_name";s:0:"";s:16:"shipping_company";s:0:"";}";} ) [1] => stdClass Object ( [session_value] => a:12:{s:4:"cart";s:415:"a:1:{s:32:"0266e33d3f546cb5436a10798e657d97";a:11:{s:3:"key";s:32:"0266e33d3f546cb5436a10798e657d97";s:10:"product_id";i:245;s:12:"variation_id";i:0;s:9:"variation";a:0:{}s:8:"quantity";i:1;s:9:"data_hash";s:32:"b5c1d5ca8bae6d4896cf1807cdf763f0";s:13:"line_tax_data";a:2:{s:8:"subtotal";a:0:{}s:5:"total";a:0:{}}s:13:"line_subtotal";d:89.9;s:17:"line_subtotal_tax";i:0;s:10:"line_total";d:89.9;s:8:"line_tax";i:0;}}";s:11:"cart_totals";s:405:"a:15:{s:8:"subtotal";s:5:"89.90";s:12:"subtotal_tax";d:0;s:14:"shipping_total";s:4:"0.00";s:12:"shipping_tax";d:0;s:14:"shipping_taxes";a:0:{}s:14:"discount_total";d:0;s:12:"discount_tax";d:0;s:19:"cart_contents_total";s:5:"89.90";s:17:"cart_contents_tax";d:0;s:19:"cart_contents_taxes";a:0:{}s:9:"fee_total";s:4:"0.00";s:7:"fee_tax";d:0;s:9:"fee_taxes";a:0:{}s:5:"total";s:5:"89.90";s:9:"total_tax";d:0;}";s:15:"applied_coupons";s:6:"a:0:{}";s:22:"coupon_discount_totals";s:6:"a:0:{}";s:26:"coupon_discount_tax_totals";s:6:"a:0:{}";s:21:"removed_cart_contents";s:6:"a:0:{}";s:22:"shipping_for_package_0";s:426:"a:2:{s:12:"package_hash";s:40:"wc_ship_5780f5fbceeddc4ac9f9e5a17c60abdd";s:5:"rates";a:1:{s:20:"legacy_free_shipping";O:16:"WC_Shipping_Rate":2:{s:7:"*data";a:6:{s:2:"id";s:20:"legacy_free_shipping";s:9:"method_id";s:20:"legacy_free_shipping";s:11:"instance_id";i:0;s:5:"label";s:13:"Free Shipping";s:4:"cost";s:4:"0.00";s:5:"taxes";a:0:{}}s:12:"*meta_data";a:1:{s:5:"Items";s:35:"Shiny brown Winter Jacket × 1";}}}}";s:25:"previous_shipping_methods";s:48:"a:1:{i:0;a:1:{i:0;s:20:"legacy_free_shipping";}}";s:23:"chosen_shipping_methods";s:38:"a:1:{i:0;s:20:"legacy_free_shipping";}";s:22:"shipping_method_counts";s:14:"a:1:{i:0;i:1;}";s:10:"wc_notices";N;s:8:"customer";s:687:"a:26:{s:2:"id";s:1:"0";s:13:"date_modified";s:0:"";s:8:"postcode";s:0:"";s:4:"city";s:0:"";s:9:"address_1";s:0:"";s:7:"address";s:0:"";s:9:"address_2";s:0:"";s:5:"state";s:0:"";s:7:"country";s:2:"DE";s:17:"shipping_postcode";s:0:"";s:13:"shipping_city";s:0:"";s:18:"shipping_address_1";s:0:"";s:16:"shipping_address";s:0:"";s:18:"shipping_address_2";s:0:"";s:14:"shipping_state";s:0:"";s:16:"shipping_country";s:2:"DE";s:13:"is_vat_exempt";s:0:"";s:19:"calculated_shipping";s:0:"";s:10:"first_name";s:0:"";s:9:"last_name";s:0:"";s:7:"company";s:0:"";s:5:"phone";s:0:"";s:5:"email";s:0:"";s:19:"shipping_first_name";s:0:"";s:18:"shipping_last_name";s:0:"";s:16:"shipping_company";s:0:"";}";} ) [2] => stdClass Object ( [session_value] => a:12:{s:4:"cart";s:413:"a:1:{s:32:"a4a042cf4fd6bfb47701cbc8a1653ada";a:11:{s:3:"key";s:32:"a4a042cf4fd6bfb47701cbc8a1653ada";s:10:"product_id";i:171;s:12:"variation_id";i:0;s:9:"variation";a:0:{}s:8:"quantity";i:1;s:9:"data_hash";s:32:"b5c1d5ca8bae6d4896cf1807cdf763f0";s:13:"line_tax_data";a:2:{s:8:"subtotal";a:0:{}s:5:"total";a:0:{}}s:13:"line_subtotal";d:180;s:17:"line_subtotal_tax";i:0;s:10:"line_total";d:180;s:8:"line_tax";i:0;}}";s:11:"cart_totals";s:408:"a:15:{s:8:"subtotal";s:6:"180.00";s:12:"subtotal_tax";d:0;s:14:"shipping_total";s:4:"0.00";s:12:"shipping_tax";d:0;s:14:"shipping_taxes";a:0:{}s:14:"discount_total";d:0;s:12:"discount_tax";d:0;s:19:"cart_contents_total";s:6:"180.00";s:17:"cart_contents_tax";d:0;s:19:"cart_contents_taxes";a:0:{}s:9:"fee_total";s:4:"0.00";s:7:"fee_tax";d:0;s:9:"fee_taxes";a:0:{}s:5:"total";s:6:"180.00";s:9:"total_tax";d:0;}";s:15:"applied_coupons";s:6:"a:0:{}";s:22:"coupon_discount_totals";s:6:"a:0:{}";s:26:"coupon_discount_tax_totals";s:6:"a:0:{}";s:21:"removed_cart_contents";s:6:"a:0:{}";s:22:"shipping_for_package_0";s:421:"a:2:{s:12:"package_hash";s:40:"wc_ship_f39e348e171105f3b846f45ad82bcaa8";s:5:"rates";a:1:{s:20:"legacy_free_shipping";O:16:"WC_Shipping_Rate":2:{s:7:"*data";a:6:{s:2:"id";s:20:"legacy_free_shipping";s:9:"method_id";s:20:"legacy_free_shipping";s:11:"instance_id";i:0;s:5:"label";s:13:"Free Shipping";s:4:"cost";s:4:"0.00";s:5:"taxes";a:0:{}}s:12:"*meta_data";a:1:{s:5:"Items";s:30:"Red Dress with black × 1";}}}}";s:25:"previous_shipping_methods";s:48:"a:1:{i:0;a:1:{i:0;s:20:"legacy_free_shipping";}}";s:23:"chosen_shipping_methods";s:38:"a:1:{i:0;s:20:"legacy_free_shipping";}";s:22:"shipping_method_counts";s:14:"a:1:{i:0;i:1;}";s:10:"wc_notices";N;s:8:"customer";s:687:"a:26:{s:2:"id";s:1:"0";s:13:"date_modified";s:0:"";s:8:"postcode";s:0:"";s:4:"city";s:0:"";s:9:"address_1";s:0:"";s:7:"address";s:0:"";s:9:"address_2";s:0:"";s:5:"state";s:0:"";s:7:"country";s:2:"DE";s:17:"shipping_postcode";s:0:"";s:13:"shipping_city";s:0:"";s:18:"shipping_address_1";s:0:"";s:16:"shipping_address";s:0:"";s:18:"shipping_address_2";s:0:"";s:14:"shipping_state";s:0:"";s:16:"shipping_country";s:2:"DE";s:13:"is_vat_exempt";s:0:"";s:19:"calculated_shipping";s:0:"";s:10:"first_name";s:0:"";s:9:"last_name";s:0:"";s:7:"company";s:0:"";s:5:"phone";s:0:"";s:5:"email";s:0:"";s:19:"shipping_first_name";s:0:"";s:18:"shipping_last_name";s:0:"";s:16:"shipping_company";s:0:"";}";}

Я попытался десериализовать этот вывод, потому что мне нужно посчитать, как часто [product_id] является специальным значением (например, 51, в приведенном выше коде это записывается как s:10:"product_id";i:51;) но я не могу заставить его работать. Так что вопрос в том, как я могу определить в массиве, показанном выше, как часто [product_id] === 51?

Мне удалось это только для одного ключа, но мне нужно это для всего массива, и хотя (для этого единственного ключа) я получил вывод, который выглядит многообещающе, как это Array ( [2838023a778dfaecdc212708f721b788] => Array ( [key] => 2838023a778dfaecdc212708f721b788 [product_id] => 51 [variation_id] => 0 [variation] => Array ( ) [quantity] => 1 [data_hash] => b5c1d5ca8bae6d4896cf1807cdf763f0 [line_tax_data] => Array ( [subtotal] => Array ( ) [total] => Array ( ) ) [line_subtotal] => 100 [line_subtotal_tax] => 0 [line_total] => 100 [line_tax] => 0 ) ) Я не могу сосчитать.

    $count = 0;
foreach ($array2 as $item) {
if ($item->product_id === '51') {
$count++;
}
}
print_r ($count);

дает мне 0, хотя это должно быть 1.

Итак, у меня есть две проблемы: как я могу завершить десериализацию многомерного массива и как подсчитать вхождение определенного значения в этот массив.

Любая помощь приветствуется.
Заранее спасибо.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector