有没有(相对容易!)一种在分类之间创建关系而不需要发布作为中介的方法

时间:2013-07-26 作者:Kevin4fm

到目前为止,我在这里和其他地方找到的所有答案都涉及到创建一个(自定义)帖子,这将是“矫枉过正”,因为在这种情况下,许多“术语”只会出现一次。

具体示例说明我正在努力实现的目标:

Person A may be the composer of Song 1;
Person A may be the lyricist of Song 2;
Person A may be both the composer and lyricist of Song 3;
Person A may have been the presenter of Show 1.
我(想我!)希望有一个“person”分类法(即,person A只输入一次)和其他分类法“composer”、“lyricist”和“presenter”。然后在歌曲1、歌曲2、节目1等的实际帖子上,我有每个人:关系。然后,搜索人员A将显示其连接到:

Song 1, as \'composer\';
Song 2, as \'lyricist\';
Song 3, as \'composer\' and as \'lyricist\';
Show 1, as \'presenter\'.
或者,如果我在问不可能的问题,并且必须通过“个人”自定义帖子进行联系,是否有一种“简单”(即自动)的方式来创建它,即当我输入歌曲、节目等的数据时,只想输入一个名称?

应该补充说,“没有……找了很久(或尝试了一些聪明的方法),但还没有找到解决方案”是一个可以接受的答案。这不是我所希望的,但至少可以说服我停止寻找/尝试!

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

使用标准的Wordpress功能很简单,这是不可能的,除非使用复杂且性能不佳的技巧。

我建议您使用的方法是创建自定义表where store relationship。

它应由5列组成:

person_id | post_id | post_type | taxonomy | term_id
现在,复制您的示例:

Person A may be the composer of Song 1;
Person A may be the lyricist of Song 2;
Person A may be both the composer and lyricist of Song 3;
Person A may have been the presenter of Show 1.
并假设:

\'Person A\' is a term of \'people\' taxonomy with term_id 66
\'Composer\' is a term of \'talents\' taxonomy with term_id 30
\'Lyricist\' is a term of \'talents\' taxonomy with term_id 40
\'Presenter\' is a term of \'talents\' taxonomy with term_id 50
\'Song 1\' is a post with the id 1
\'Song 2\' is a post with the id 2
\'Song 3\' is a post with the id 3
\'Show 1\' is a post with the id 9
要重新表示示例中的关系,表中需要5行

66 | 1 | \'post\' | \'talents\' | 30
66 | 2 | \'post\' | \'talents\' | 40
66 | 3 | \'post\' | \'talents\' | 30
66 | 3 | \'post\' | \'talents\' | 40
66 | 9 | \'post\' | \'talents\' | 50
了解一个人的id,你就知道他/她的所有才能以及与哪些职位相关。同样地,知道一个职位id,你就知道所有相关的人,以及该职位所涉及的人才。

获取和显示数据很容易:一旦人、人才、歌曲和节目成为wordpress的标准实体(帖子、术语),你就不需要做任何事情来创建url来选择性地显示它们,你也可以更好地利用模板层次结构。获取自定义关联非常简单,只需几行sql即可完成。

存储自定义关联有点困难:作为wordpress核心的一部分,您必须为范围构建完整的UI。没有什么是不可能的:你只需要一个有一些行(或更好的能力,以友好的方式添加行)的元数据库,每行有两个选择菜单:一个用于人员,一个用于人才。

请注意,这种方法允许将人们与每种帖子类型和每种分类法联系起来:也许现在您将只使用标准的帖子类型和“人才”,但在将来。。。我总是喜欢以灵活的方式进行设计,以避免在每次更改时进行重构。

希望有帮助。

SO网友:crissoca

如果你想用一种现成的方式来实现这一点,我想说的是使用高级自定义字段,它有一个友好的UI,而且非常容易使用和理解,你可以选择一种关系类型或一个帖子对象,然后在你的主题上做一些工作,你就会得到帖子类型或分类法之间的关系。

http://www.advancedcustomfields.com/resources/field-types/relationship/

http://www.advancedcustomfields.com/resources/field-types/post-object/

否则我会选择通用汽车公司的答案。

SO网友:Angela

这是一个这样的结构。这是双向的。人A可以是诗1的作曲家,也可以是歌2的歌手,你可以通过metas将他们联系起来。然而,问题是,他/她自己是一个作曲家;首先是歌手。所以你可能想做这样的事情:
创建一个CPT,创建新的人,并为他们添加歌手或作曲家等特质。然后为不同类型的娱乐创建CPT,比如电视节目和诗歌。然后通过元字段链接Person。

结束

相关推荐