I am new to Wordpress and Woocommerce. Looking at the database I came to see few text columns where the stored value looks something like this:
a:23:s:16:"woofc_last_added";s:32:"d770c2ff0c2b832aad82b0cbc3f144a6";s:21:"removed_cart_contents";s:6:"a:0:{}";s:10:"wc_notices";N;s:8:"customer";s:775:"a:25:}
I have stripped most of the fields, but it looks somewhat like this.
What format is this?
How can I parse values in this format?
How can I retrieve all the values from this text data in php?
The data is in a serialized protected format
You could try to use
json_decode()
,unserialize()
ormaybe_unserialize()
functions,
But you will not get any data as it's aWC_Session_Handler
stored PROTECTED object.
You will need to use instead WC_Session_Handler
or WC_Session
available methods.
1) To get the current customer WC_Session_Handler
object you can use:
// Get the current WC_Session_Handler obect
$session_obj = WC()->session;
print_r($session_obj); // Raw output
2) To get the WC_Session_Handler
object from a defined customer ID
// 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) Accessing the protected data:
## --- 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'));
Its not a JSON format it is simple a way wordpress save arrays in serialized format in its tables. Just use php unserialized function, it will unserialize this and you will be able to parse it in normal php array format. You can view this function documentation here http://php.net/manual/en/function.unserialize.php
It stores in serialized format. You can get normal array by using unserialized function.
unserialize()