我想让我的functions.php
文件使用update_option()
保存一些本地数据,但wp_options
表似乎对我网站上的每一个软件都是全局的,所以我必须给我的数据取一个长名称,以确保它不会与其他人为其数据选择的名称冲突。有办法解决这个问题吗?
谢谢
我想让我的functions.php
文件使用update_option()
保存一些本地数据,但wp_options
表似乎对我网站上的每一个软件都是全局的,所以我必须给我的数据取一个长名称,以确保它不会与其他人为其数据选择的名称冲突。有办法解决这个问题吗?
谢谢
不,我强烈建议不要更改WordPress选项表模式,您会遇到许多问题,例如:
不再有可靠的更新过程,您将无法使用get_options
如果您能够成功地使用该套件,还可以使用它附带的一套功能和对象缓存及优化get_options
如果你开始的话,你会回来的
我的建议?$prefix.\'_option_name\'
有办法解决这个问题吗?
Short answer: 是的,技术上可能,但是not recommended. 阅读下面的详细答案:
Using Custom Database table
:
保养变得很困难。例如,如果您正在使用的另外十个插件决定拥有自己的插件,该怎么办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文件所述:作为单独的选项访问数据可能会导致许多单独的数据库事务,通常,数据库事务是昂贵的操作(就时间和服务器资源而言)。存储或检索选项数组时,它发生在单个事务中,这非常理想。
所以,若只使用一个选项就可以了,那个么为什么还要创建自定义数据库表呢?只有一个选项名称,冲突的可能性更低(在遵循上述建议后)(&;即使发生冲突,解决方案也非常简单,因为您只需更改数据库中的一个选项。
您可以为您的选项创建一个新表。
在我保存选项的插件上,我只是用插件名称的首字母来命名选项,以确保选项“name”不是一个常见的词。因此,如果我的插件被称为“我真正整洁的插件”,那么选项名称将是“mrnp\\u options”。
如果您担心与另一个类似的选项发生冲突,那么您的插件激活代码可能会有几个可选的选项名称。但是,您必须将该选项名称存储在某个地方。所以,我认为这不是一个好的选择。
我还将插件的“缩写”作为插件中所有函数的一部分,这样我的函数就不会与其他函数发生冲突。
我非常同意TomJ Newell和Rick Hellewell的观点,因为这是WordPress的最佳实践。
这page 如果这是您的新领域,WordPress Codex将帮助您创建数据库表。
我收到了很多警告,比如: Mixed Content: The page at \'https://www.example.in/\' was loaded over HTTPS, but requested an insecure image \'http://www.example.in/wp-content/uploads/2014/12/logo_250.png\'. This content should also be served over HTTPS. 跟踪之后SSL break