如何访问WordPress插件变量/ MySQL数据


How to access WordPress Plugin Variable/MySQL Data?

我有一个插件,它是woocommerce的扩展。该插件将信息存储在MySQL表"wp_woocommerce_order_itemmeta"下。在"meta_key"列下,有"_wc_deposit_meta"。在"meta_key"列旁边,我有"meta_value"。在"meta_value"下,您可以找到a:5:{s:6:"enable";s:3:"yes";s:7:"deposit";d:197.67000000000001591615728102624416351318359375;s:9:"remaining";d:401.32999999999998408384271897375583648681640625;s:5:"total";d:599;s:5:"ratio";d:1;}.在学习PHP时,我从未遇到过这样的值。有人可以解释一下这个值是什么以及我如何访问"存款"的价值。这只是多维数组的另一个示例吗?

我一直试图通过在我的函数.php中$my_order = $order->get_items();来访问这个值,它返回一个数组。我看到名为"_wc_deposit_meta"的正确数组具有这个奇怪的值,由于逗号和冒号,我不知道如何访问该值。

很抱歉菜鸟问题,但我一直在尝试研究这个购买找不到简单的黑白答案。如果有人能指出我正确的方向,我将不胜感激。

当WordPress需要将多维数据存储到字段中时,它会应用PHP的serialize()函数将数据转换为可存储的字符串,然后在读取值时unserialize()将其返回到正确的数据结构。

序列化数据定义的剖析在 PHP serialize()文档的第一条注释中描述:

  • 字符串:s:[size]:[value];
  • 整数:i:[value];
  • 双人间:d:[value];
  • 布尔值:b:[value];(不存储"真"或"假",存储"1"或"0"(
  • 空:N;
  • 阵列:a:[size]:{[key definition];[value definition];(repeated per element)}
  • 对象:O:[strlen(object name)]:[object name]:[object size]:{s:[strlen(property name)]:[property name]:[property definition];(repeated per property)}

更具体地说,WordPress使用自己的maybe_serialize()maybe_unserialize()包装器来减少不必要的(取消(序列化的机会。

在您正在使用的特定序列化数据中,您的存款由键/值定义表示 s:7:"deposit";d:197.67000000000001591615728102624416351318359375; 。要手动更改您的存款价值,您需要在 d: 之后修改双精度。要在 WordPress 中以编程方式修改值,请使用元数据 API 使用"get"函数查询字段(这将隐式反序列化它(,修改返回的关联数组中'deposit'字段的值,然后使用元数据 API 中的"更新"函数保存新值。

您正在查看的值已serialized()并存储在数据库中。只需获取该变量并在其上使用unserialize(),如下所示:

$myVal = unserialize($databaseColumn);
  1. 序列 化
  2. 反序列化