Are post ID's reliable?

时间:2014-10-07 作者:Qix - MONICA WAS MISTREATED

我明白这一点post ID\'s are unique, 但它们作为持久数据ID可靠吗?

更具体地说,是否可以保证通过迁移或其他数据交换,post ID不会更改?

我知道wordpress主要是使用MySQL实现的,所以ID由AUTO_INCREMENT 机械装置然而,Wordpress是否有任何警告,将来会改变这种行为,或者可能会改变另一种持久性实现(如MongoDB)?

5 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

迂腐的答案是否定的。

虽然ID是唯一的,但只要更改保持了数据库的一致性,它们就可以在UX中进行更改,而无需进行任何更改。虽然创建一个新帖子将生成一个新的唯一ID,但您也可以通过代码创建帖子,以重用一些“旧”ID。

在实践中,它们是可靠的,但如果可靠性对你来说非常重要,那么你需要在帖子上附加一些数据,这些数据将被用作你自己需要的可靠标识符。

Update: 完全忘记了它,因为它很少被使用,而且大多数时候我看到它被错误地使用,但是wordpress有一个可靠的唯一标识符,它是GUID

SO网友:Johannes Pille

我知道post ID是唯一的,但它们作为持久数据ID可靠吗?

SO网友:guidod

概括一下所说的一切,答案是:

Yes, IDs are reliable for this, 只要不使用WordPress XML导出器/导入器将有问题的帖子放到不同的安装中。只要您迁移现有数据库,并且不从头安装WordPress,ID就会保持不变。

PS1:是的,正如马克·卡普伦所说,如果您自己手动更改或重用ID,ID可以更改或重用,但您已经知道了这一点,任何数据库上的任何字段都是如此。

PS2:The wp_posts GUID field should not be trusted 作为常量,因为它们依赖于原始帖子的URL,并且在网站迁移时可能会无意中被新URL替换,而且很明显,当使用导出器/导入器时,GUID也会发生变化。

SO网友:WpMania.Net

答案可以是肯定的,也可以是否定的。

一个站点的Id必须是唯一的。你知道,如果有两个id,内容就无法提供。作为WP,使用id为帖子和页面提供内容。WordPress循环就是这样设计的。因此,您可以将其用于主题或插件开发。这不会有任何问题。

但如果你将内容从一个网站导出到另一个网站,这可能会让你感到痛苦。因为新网站可能会为新添加的内容生成唯一的id。在这种情况下,id不是一个好的解决方案。

所以你可以用slug代替ids。

P、 美国Slug也可以更改。但当您将内容从一个网站导入到另一个网站时,它不会自动更改。

希望这有帮助。萨比尔

SO网友:Magne

帖子ID为not necessarily 唯一的参考我在你链接的帖子上的回答:https://wordpress.stackexchange.com/a/209832/71131

Within a Wordpress Multisite Network, id\'s are not unique. 一个站点上的博客帖子可以与另一个站点上的博客帖子具有相同的id。可能是因为每个站点都有一个单独的数据库/表。(这件事刚刚发生在我身上。)如果您在代码中(在插件中,或在与Wordpress安装通信的第三方服务中)使用Wordpress,则会出现问题id\'引用Wordpress多站点网络上特定的独特博客文章。

因此,我建议使用$post->guid 相反,这是Wordpress专用的全局唯一标识符。感谢@马克·卡普伦让我意识到这一点NB:guid必须在较低的映射中才能工作

@guidod提到了这样一种风险,即当网站迁移时,“[guid]可能会被无意中替换为新URL”,因为有人可能会对所有URI进行查找/替换,和/或希望更新guid的URI部分,即使他们不应该更改guid中的任何内容。为了减轻此风险,您还可以存储$post->ID 作为备份。如果在Wordpress安装中访问和引用博客文章的第三方服务找不到基于guid的文章,则可以尝试该文章的ID(但如果您是在多站点安装中进行此操作,请记住基于适当的博客/站点对其进行上下文化)。

结束

相关推荐

Wp_postmeta中的meta_id是什么?

我试图在WordPress自定义字段中添加一些数据,并通过在中添加更多直接记录/数据wp_postmeta 表通过SQL查询。下面有四列。。。“元id”-每个条目的唯一id“post\\u id”-此元数据的帖子id</“meta\\u key”-“key”的名称</“meta\\u值”-与键关联的值现在,我使用下面的SQL查询添加更多记录/数据。$INSERTING_DATA = \"INSERT INTO `wp_postmeta` (`meta_id`, `post_id`, `meta