一篇文章(帖子)ID会变吗?

时间:2014-04-16 作者:Ihsan

所以我正在为wordpress开发一个插件,也是一个新手。我需要使用wordpress帖子或博客文章的ID作为唯一的引用ID,或者在数据库中使用唯一的或主键。

博客上的ID是否有过变化?

其他背景信息..:

我正在使用此函数获取唯一帖子的id:

the_ID();
此外,我的测试站点上的博客文章的URL有一个带有数字(ID号?)的参数:

?p=87
但我见过一些博客,其中URL中包含标题,而不是参数p=87。

当我打印出函数时the_ID();, 它返回参数87。我是否可以确定它不会更改并在外部网站上用于链接目的?

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

不,它们不会改变,但你不应该依赖它们来创建外部站点。

如果我们谈论的只是单个WordPress网站上的数据库,那么:

如果它是一个已发布/已建立的帖子/页面,那么是的,ID不会改变,除非删除它。如果它是修订、草稿等,ID不会改变,但也不会存在很长时间。然而,一旦我们离开这个领域,我们就进入了数据可移植的领域,附加到它上的数据将是一个糟糕的数据块。如果导出数据或依赖RSS,则post ID不可用,并且无法在导入和导出后继续使用。

那么如果我

对于表和在数据库中存储对Post的引用或Post Meta,请使用Post ID。

要检测WordPress安装之外的其他站点/程序上的重复项,请使用post GUI。这些都是通过RSS和其他方式传递的,只要你的帖子URL没有大幅度变化,它们应该保持不变。

在我的代码中,永远不要在主题中硬编码帖子ID,它们是我们所说的“神奇值”,它们是horrificly bad 编程实践。不仅仅是WordPress,任何有这些的代码从定义上来说都是糟糕的代码。像瘟疫一样躲避。

使用存储在带有GUI的选项中的帖子ID在仪表板区域中进行设置,或者使用已知的slug从帖子中提取帖子ID。

对于自定义表或自定义数据存储,我建议您使用custom taxonomiespost meta. 您的自定义表很可能既并没有必要,也并没有很多缓存机制所能获取的性能。

如果这样做的话,您可以在站点B的侧栏中列出站点A上最新的博客帖子,那么您应该使用RSS(可能是一个自定义小部件,以便您可以适当地设置它们的样式)将它们拉入,或者使用多站点安装。

但在内部,总是通过其ID引用帖子

要了解术语和类别,请在内部使用术语ID,在外部使用术语slug。

URL

您提到了URL。原因是什么?p=86 etc是因为您没有启用永久链接。

但如果您确实启用了永久链接,那么?p=86 url仍然有效。

E、 g.我的网站上的这些URL都有效:

其他人的永久链接可能不会采用相同的格式。

SO网友:Pieter Goosen

保存帖子时,所有数据都保存在数据库中,并为该特定帖子分配唯一ID。该帖子的所有信息和附件也链接到该帖子的唯一ID。该ID永远不会更改,该帖子将永远具有该ID。该帖子将保留该ID,直到该帖子被永久删除

结束

相关推荐

是否可以为Content_Width创建条件?

在这里搜索,我发现了两个相关的问题,当时,这是不可能的。how to create a conditional content_width for a wordpress theme?以及菲利普·阿瑟·摩尔(Philip Arthur Moore)描述的另一种通过CSS的方式(代码也在Codex上):What is the role and history of the $content_width global variable?由于提到的问题有点老,我的问题是,2013年年中之后发布的版本是否改进了该