帖子、页面和类别ID是否彼此唯一?

时间:2014-07-30 作者:bsy-web

我正在寻找一个函数来获取post或类别的所有祖先,并找到get_ancestors( $object_id, $object_type ). 令我惊讶的是,法典显示第二个参数是必需的:

$object_type
        (string) (required) The name of the object type (page, hierarchical post type, category, or hierarchical taxonomy) in question

    Default: None 
post、page和category ID是否都是彼此唯一的,即它们的集合的交集将是空的?

如果没有,为什么没有?只有在文章、页面和类别都是单个CMS的数据对象的情况下,如果必须指定对象类型,API才会变得复杂。

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

有多种类型的数据对象:

贴子:页面、常规贴子、导航菜单项、附件和自定义贴子类型不同分类法的术语:类别、标记、导航菜单注释链接选项不同元数据的术语ID用于不同类型的对象,而不是贴子ID。两者都是不同表的主键。从…起Potential roadmap for taxonomy meta and post relationships:

目前,WordPress中使用两个不同的ID来表示术语:术语ID和术语分类ID。术语ID(以及名称和slug)实际上可以出现在多个分类中,因此要标识特定的术语,您必须具有术语ID和相应的分类,或者只有术语分类ID。这可以追溯到WordPress 2.3中的原始分类模式。

get_ancestors() 是做得太多的功能之一™. 如果您只想发布(页面,附件)祖先,请使用get_post_ancestors($object_id).

如果没有,为什么没有?只有在文章、页面和类别都是单个CMS的数据对象的情况下,如果必须指定对象类型,API才会变得复杂。

这些对象的具体日期非常不同。如果您查看posts表,您将看到许多术语不需要的字段,以及修订、草稿等。将这些字段保存在不同的表中可以更容易地创建高效的表索引,甚至自定义索引,具体取决于您对WordPress的实际使用情况。

结束