是自定义表还是自定义域?

时间:2013-09-25 作者:RhymeGuy

我正在建立博客,用户可以选择下载图片。我想显示post显示了多少次以及图像下载了多少次的信息。

从技术上讲,我已经通过使用自定义字段解决了这一问题,而且效果很好。在不久的将来,我想添加基于VIE/下载对图像进行排序的选项。我也解决了这个问题,但我现在想的是,也许我应该使用自定义表而不是自定义字段。

我计划有大约数千张图像,我担心显示大多数下载/查看图像的查询是否会很慢。

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

将自定义表用于视图计数器。这更快、更容易编写,而且副作用更少。

发布元查询are rather slow. 信息是stored in a way 针对平均post处理进行了优化,而不是针对自定义排序或许多写入访问。而且all 每次有人请求任何字段时,都会获取post元数据。即使不需要资源,您的数据也会使用这些资源。

迟早,您可能还需要计算存档视图、一个页面上的多个图像,或者下载包含多个文件的存档文件。你想把它存放在哪里?使用单独的表可以获得更多的自由:它们更容易扩展,可以添加或删除字段、表或索引。

其他插件可能会对您的数据执行意外操作,因此您不能再依赖它了。

示例:InMultilingual Press, 当有人对现有帖子进行翻译时,我会all 发布元字段(除了一些已知的内置字段)并将其复制到其他博客。我不得不这么做,否则很多插件都会坏掉。但是你的插件现在可能会得到一个错误的计数器:在任何人看到新帖子之前,它的浏览量就不正确了
您可以在多语言Press中保护您的字段,但在其他插件中,这可能是不可能的,或者您只是不知道它们的存在。

我还写了一篇关于这一决定的小博客,其中有更多的论据:How to store my custom values?

另请参见此答案:Post meta vs separate database tables

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register