的數據是一個序列化保護格式
你可以嘗試使用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)從定義的客戶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得到WC_Session_Handler
對象)訪問受保護的數據:
## --- 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'));
感謝您的回答。我只是想知道數據是如何分析的。數據看起來很壓縮,所以我想我可以在一個php應用程序中使用它,在這個應用程序中我有很多字段要存儲在數據庫中。數據更像是評論,備註等我們的用戶。 –
數據未壓縮。在Wordpress中,存儲在數據庫中的所有數組或對象總是被序列化的...在這裏,因爲它是一個具有合理數據的自定義WooCommerce表,這些數據是序列化但受保護的,所以您將無法從數據庫反序列化它。現在,您可以構建自己的函數代碼來解析這些數據,並使用WC_Session_Handler類和方法將其保存在自定義表格中... – LoicTheAztec
您對woocommerce更新此字段的頻率有任何想法嗎?這個字段何時更新?會話結束時還是特定方法執行時? –