有办法解决这个问题吗?
Short answer: 是的,技术上可能,但是not recommended. 阅读下面的详细答案:
Using Custom Database table
:
你当然可以
implement custom Database table 来处理您的数据。但是,对于简单的操作,此过程是
not recommended. 原因如下:
保养变得很困难。例如,如果您正在使用的另外十个插件决定拥有自己的插件,该怎么办table
? 您的数据库将充满tables
很可能没有很好的定义。
您必须密切关注WordPress&;的未来更新;并亲自确保自定义数据库功能保持兼容。
选项API经过多年的经验优化;更新时,要获得与自定义数据库相同级别的优化并不容易。
所以using the core Options API
is your best option (除非您的数据与帖子或用户相关。在这种情况下,您应该分别使用帖子元或用户元)。
To avoid option name conflict if the data is site specific:
<使用网站的
domain name 作为选项名称前缀。例如,如果您的站点
example.com
, 使用
example_com_option_name
(更换
option_name
使用合适的名称)作为选项名称。其他人不会将您的域名用作前缀。
在这种情况下,最好不要在主题中编写数据函数functions.php
. 相反,创建一个自定义插件来处理这些特定于站点的数据Options API
. 这样,即使您更改了主题,特定于站点的选项也将保持不变。检查this article on why you shouldn\'t use functions.php
for these types of cases.
To avoid option name conflict if the data is theme specific:
如果所讨论的数据是特定于主题的,那么如果您在其他站点中使用该主题,这些站点将具有类似的数据;或者,如果您更改了主题,您可能需要也可能不需要这些数据?在这种情况下:
使用主题名称作为选项名称前缀。例如,如果主题名称为steve
, 您可以使用steve_option_name
. 如果您认为主题名称可能不唯一,请在选项名称中组合您的主域名:example_com_steve_option_name
.
在这种情况下,实施Options API
主题中的函数functions.php
文件
To avoid option name conflict if the data is neither theme specific nor site specific:
如果您有多个站点&;他们使用不同的主题,所有这些网站都需要相同的选项数据?
在这种情况下,实施Options API
函数,并将插件名称用作选项名称前缀。如上所述,将主域名与插件名称相结合,以避免所有可能的命名冲突
[Bonus] Avoid adding multiple options:
在大多数情况下,实际上不需要创建多个选项。除非大多数选项专门用于站点的不同部分,否则通常最好只创建一个选项,并将所有特定于站点的自定义选项放在一个数组中。
This document describes 你怎么能做到这一点。如WP文件所述:
作为单独的选项访问数据可能会导致许多单独的数据库事务,通常,数据库事务是昂贵的操作(就时间和服务器资源而言)。存储或检索选项数组时,它发生在单个事务中,这非常理想。
所以,若只使用一个选项就可以了,那个么为什么还要创建自定义数据库表呢?只有一个选项名称,冲突的可能性更低(在遵循上述建议后)(&;即使发生冲突,解决方案也非常简单,因为您只需更改数据库中的一个选项。