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

Posted

技术标签:

【中文标题】如何访问 WordPress 插件变量/MySQL 数据?【英文标题】:How to access WordPress Plugin Variable/MySQL Data? 【发布时间】:2016-05-26 19:08:51 【问题描述】:

我有一个插件,它是 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 时,我从未遇到过这样的价值。有人可以解释这个值是什么以及如何访问“存款”的值。这只是多维数组的另一个例子吗?

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

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

【问题讨论】:

【参考方案1】:

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

序列化数据定义的剖析在 PHP 的serialize() 文档的第一条评论中进行了描述:

字符串:s:[size]:[value]; 整数:i:[value]; 双:d:[value]; 布尔值:b:[value];(不存储“true”或“false”,存储“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 中以编程方式修改值,请使用 Metadata API 使用“get”函数查询字段(这将隐式反序列化它),修改返回的关联数组中 'deposit' 字段的值,然后保存新的使用元数据 API 中的“更新”函数获取值。

【讨论】:

【参考方案2】:

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

$myVal = unserialize($databaseColumn);
    serialize unserialize

【讨论】:

以上是关于如何访问 WordPress 插件变量/MySQL 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何安装WP Super Cache加速WordPress网站访问速度

php 一个示例插件,显示如何向WordPress添加自定义查询变量,重写标记和重写规则

如何开发一个WordPress插件

如何开发一个WordPress插件

为 WordPress 插件存储变量而不创建新表

如何使用 WordPress 进行自定义查询?