我应该将数组存储在自定义字段中还是创建自定义表?

时间:2015-11-17 作者:Adzay

我正在开发一个网站,在那里我修改了评论表,使其具有评论评级功能。我要求他们对食物、服务和地点进行评分。每个选项都有“坏”(1)、“好”(2)、“好”(3)。我将每个字段存储在自定义注释字段中,如下面的“review\\u service”=1&;“review\\u food”=3。

现在,当页面加载时,“get\\u comments”用于获取所有自定义注释字段,并在以下数组中对其进行计数。该数组用于显示结果。

Array
(
[food] => Array
    (
        [1] => 3
        [2] => 1
        [3] => 1
    )

[service] => Array
    (
        [1] => 1
        [2] => 2
        [3] => 2
    )

[location] => Array
    (
        [1] => 1
        [2] => 3
        [3] => 1
    )

)
以后,我想显示按计数顺序列出的位置。我确信在所有帖子中使用“get\\u comments”是没有效率的。我想到了两个主意。

将数组(序列化)存储在位置的post自定义字段中。每次完成检查时,都会更新自定义字段中的数组。

将数组放入如下自定义表中。EDIT: 我忘了添加选项列。

|Id | post_id | option_id |option|option_count|

|1 |1433 |food |bad |5 |

|2 |1433 |food |good |3 |

在速度/效率方面,我应该选择哪个选项?

2 个回复
SO网友:Douglas.Sesar

由于您计划检索和显示数据(并且很可能希望对其进行排序),因此您应该将审查数据存储在自定义表中。

所有这些字段只能设置为整数:id、comment_id、food、service、location

然后,您可以通过将此表连接到comments表,将comments表连接到posts表来获取数据。

SO网友:s_ha_dum

将数据存储在序列化数组中是一种可怕的数据存储方式,除非您只想在块中取出数据。如果您想查询序列化字符串中包含的数据,那么您会遇到麻烦。不要那样做。存储粒度数据。

其次,您的“自定义表”看起来很像commentsmeta表或postmetatable。重复这一点是没有意义的。WordPress没有一个核心函数,据我所知,它将单独通过键来提取元数据,而不绑定到ID(这是核心中的一个限制),因此您必须编写自己的函数来提取数据,但无论如何您都会这样做。

另请参见:
https://wordpress.stackexchange.com/a/82585/21376
https://wordpress.stackexchange.com/a/88715/21376

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: