我认为您在某种程度上误解了自定义帖子类型和自定义分类法。
理论
自定义帖子类型
我认为自定义帖子类型的目的是对数据本身进行格式化,它描述的是一种内容类型,而不是内容本身。以内置
page
,
post
, 和
attachment
职位类型,例如:
在page
post type描述网站上通用静态页面的格式,该页面可以使用父级组织为层次结构
post
帖子类型描述及时的内容,这些内容可以通过类别和标签进行组织,这些类别和标签反映内容本身的性质,并通常通过评论强调社区。帖子还发布在RSS提要中,供访问者进行外部消化attachment
post type描述与上述post类型之一关联的媒体文件出版没有意义;关于我们”;内容作为
post
(内容发布的时间顺序是不相关的,在此类静态内容上有评论部分是不常见的),将新闻故事作为页面发布也没有意义(故事发布时很重要,使用分类法来描述它是什么类型的故事很有用)。任何内容都不能合理地作为
attachment
.
更奇怪的是,为每一条静态内容创建一个唯一的帖子类型(一个“关于我们”的帖子类型、一个“联系我们”的帖子类型、一个“隐私政策”的帖子类型等等),因为每一条内容都可以用相同的格式描述。
与自定义帖子类型相关的任何数据最常通过Metadata API, 它允许您将自定义信息附加到帖子。
自定义分类法
分类法只不过是将项目分组在一起的一种方法。实际上,您可以通过分类来组织各种内容,或反映内容的某些方面,无论内容是用相同的帖子类型描述的,还是用不同的帖子类型描述的。
列出电视节目和电影的网站可能对这两者都有自定义的帖子类型(因为情节电视节目的描述方式与描述电影的方式不同),但可以使用相同的方式对其中任何一个项目进行分类genre
分类法(其中的条目或术语将包含“科幻”、“恐怖”、“行动”等内容)。
根据定义,曲棍球、篮球和足球都是一种运动,因此可以用与任何运动相同的格式来描述(例如,名称、规则集、历史记录等)。因此,您应该创建一个sport
自定义帖子类型,并创建sport
代表每个单项运动的立柱类型。
按照同样的逻辑,一个athlete
post类型将充分涵盖所有运动的参与者event
帖子类型将针对任何运动、运动员等的任何事件。
sport
s可以用描述运动类型的分类法来组织,即;观众体育“"E;团队运动“"E;竞技体育“"E;业余体育运动"E;水上运动“"E;“职业体育”;,然而,对于您的应用程序来说,这是不必要的。
事件是按位置组织(或分组)的,因此location
适用于event
岗位类型。它可以按地理位置进行分级(例如,州或省的术语将城市术语作为子项),允许您按城市或地区查询事件,也可以像标记一样简单地进行分级。
项目和运动员都可以根据各自的相关运动进行组织,因此,除了sport
CPT,asport
将创建分类法(而不应用于sport
CPT。或者Metadata API 可用于将项目与各自的sports
CPT条目。
However, 从你的描述来看,听起来你似乎对描述你网站上的任何运动都不感兴趣——你不需要实际的页面来详细描述一项运动的各个方面,而不需要与之相关的人、地点和事件。因此,如果没有sport
完全是CPT,而只是sport
分类法,允许您分组athletes
和events
他们各自的运动。
总结
我认为组织内容的最佳方式如下:
自定义分类法sports
locations
- 自定义帖子类型
athlete
- 使用sport
分类学event
- 使用sport
和location
分类法query with the following arguments 返回包含所有参加足球比赛的运动员的存档页:$args[ \'post_type\' ] = \'athlete\';
$args[ \'tax_query\' ] = array(
\'taxonomy\' => \'sport\',
\'terms\' => \'football\'
);
此查询在URL上始终可用/?post_type=athlete&taxonomy=sport&terms=football
如何将其转化为永久链接取决于您的permalink settings 还有你选择的鼻涕虫。