Я новичок в WordPress и Woocommerce. Глядя на базу данных, я увидел несколько текстовых столбцов, где хранимое значение выглядит примерно так:
а: 23: с: 16: "woofc_last_added"; s: 32: "d770c2ff0c2b832aad82b0cbc3f144a6"; s: 21: "removed_cart_contents"; s: 6: "а: 0: {}"; s: 10: "wc_notices", N ; s: 8: "клиент"; s: 775: "а: 25:}
- Загрузка содержимого базы данных через XMLHttpRequest в WordPress
- Как изменить приоритет действия в WordPress?
- Количество коротких сообщений WordPress, количество раз используемых в сообщении
- WordPress: проверьте, есть ли предыдущие сообщения перед отображением ссылки
- Загрузка дополнительных сообщений Ajax Button в WordPress
Я разделил большинство полей, но это выглядит примерно так.
Какой формат это?
Как я могу анализировать значения в этом формате?
Как получить все значения из этих текстовых данных в php?
Данные находятся в сериализованном защищенном формате
Вы можете попытаться использовать функции
json_decode()
,unserialize()
илиmaybe_unserialize()
,
Но вы не получите никаких данных, так как этоWC_Session_Handler
хранит объект PROTECTED .
Вам нужно будет использовать доступные методы WC_Session_Handler
или WC_Session
.
1) Чтобы получить текущий объект WC_Session_Handler
клиента, вы можете использовать:
// Get the current WC_Session_Handler obect $session_obj = WC()->session; print_r($session_obj); // Raw output
2) Чтобы получить объект WC_Session_Handler
из определенного идентификатора клиента
// The defined customer ID $customer_id = 5; // Get an Instance of the WC_Session_Handler object $new_session_obj = new WC_Session_Handler(); // The defined customer ID $session_obj = $new_session_obj->get_session( $customer_id );
3) Доступ к защищенным данным:
## --- Get the data in an array (values are still serialized) --- ## $session_data_array = WC()->session->get_session_data(); print_r($session_data_array); // Raw output ## -------------- Get the cleaned unserialized data ------------- ## $session_cart = WC()->session->get('cart'); $session_cart_totals = WC()->session->get('cart_totals'); $session_applied_coupons = WC()->session->get('applied_coupons'); $session_coupon_discount_totals = WC()->session->get('coupon_discount_totals'); $session_coupon_discount_tax_totals = WC()->session->get('coupon_discount_tax_totals'); $session_removed_cart_contents = WC()->session->get('removed_cart_contents'); $session_shipping_for_package_0 = WC()->session->get('shipping_for_package_0'); $session_previous_shipping_methods = WC()->session->get('previous_shipping_methods'); $session_chosen_shipping_methods = WC()->session->get('chosen_shipping_methods'); $session_shipping_method_counts = WC()->session->get('shipping_method_counts'); $session_customer = WC()->session->get('customer'); // Raw "Cart" output example print_r(WC()->session->get('cart'));
Это не формат JSON, а просто способ сжатия wordpress массивов в сериализованном формате в своих таблицах. Просто используйте несериализованную функцию php, она будет неэтериализовать это, и вы сможете проанализировать ее в обычном формате php-массива. Вы можете просмотреть эту функциональную документацию здесь http://php.net/manual/en/function.unserialize.php
Он хранится в сериализованном формате. Вы можете получить нормальный массив, используя несериализованную функцию.
unserialize()