如何在wp_options中使用a:n:{{}}语法存储选项?


9

我正在检查特定插件的工作方式,并注意到它以这种数组格式将其option_value的数据存储在wp_options中...

a:2:{i:20; a:2:{s:8:“原始”; s:15:“ 20.original.jpg”; s:9:“缩略图”; s:12:“ 20.thumb .jpg“;} i:8; a:2:{s:8:”原始“; s:14:” 8.original.png“; s:9:”缩略图“; s:11:” 8.thumb .png“;}}

我喜欢这种方法,因为它只使用一行来保存我的自定义数据,因此卸载清理很容易。有没有一种标准方法可以对导致这种语法的自定义字段执行获取/设置操作?

更新:感谢Denis和其他添加了回复的人。

如果其他人有这个问题,这是有关此方法的出色教程> http://striderweb.com/nerdaphernalia/2008/07/consolidate-options-with-arrays/

Answers:


8

在更新选项时只需传递一个数组。它将自动序列化。


谢谢丹尼斯。如果其他人有这个问题,这里有一个很好的方法教程> striderweb.com/nerdaphernalia/2008/07/…–
Scott B

哇-不知道 我一直试图自己序列化它们。
唐·吉尔伯特

这种格式是特定于WordPress的吗?
trusktr

注意:您还可以传递一个对象(例如stdClass)。使用get_option时,您将获得确切的对象:)
布莱恩

@Brian:实际上,它不是stdClass。这只是 stdClass,否则如果该类不存在,WP将在加载时崩溃,该选项设置为autoload,并且没有任何类自动加载器可以找到合适的类。
Denis de Bernardy 2015年

3

序列化是自动完成的,但是如果您想知道如何手动执行此操作,则要查看的函数称为serialize()


2

按照其他答案,当存储或检索选项时,将对更复杂的数据格式(数组,对象)自动执行(非)序列化。这也适用于瞬变和其他功能。

从技术上讲,这是通过内部用法maybe_serialize()maybe_unserialize()函数来执行的,这些函数和函数试图确定是否需要按原样处理或传递数据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.