Complex Taxonomy scheme

时间:2017-09-01 作者:Karls

我们正在建设一个度假村网站,我们面临着一个巨大的分类问题。

一方面,我们有行政办公地点,如country>>region>>department 和“自然”位置,如mountain-range>>sub-mountain range. 这可以通过安排两种不同的分类法来进行分类,例如管理位置和自然位置。这听起来很容易,但当你意识到一些度假胜地共享两个或多个地方时,就不那么容易了。甚至有一个度假村同时属于三个欧洲国家!

但我们也在处理其他类型的地点,如国家公园(例如,可以覆盖两个或多个地区或部门)、区域公园、自然公园、旅游区和次区域,甚至山谷、湖泊或只能贴上“其他”类特殊标签的项目。

因此,我们能想到的唯一解决方案是构建更多的分类法,并添加一些术语元,通过链接不同分类法的术语来组织所有这些混乱。比方说,你想列出一些国家公园中有哪些度假村,这些国家公园覆盖两个地区,同时位于两个不同的旅游区,同时也是一个较大的多个度假区的一部分,还有其他五个度假村。

实际上,我们有几十起这样的案件。例如,我们希望用户看到一个菜单,其中包含一些不同的选项下拉列表,告诉他们自己的选项。

今天我的问题不是关于建立这样一个菜单。它是关于如何组织分类混乱。我们知道,当您有post和term meta时,查询时会出现性能和规模问题,因此这对我们来说是一个有点复杂的问题。我们曾认为,我们可以将不同分类法的术语与术语meta“连接”,但我们不完全确定其确切程度,以及它是否易于查询和排序。

我们的问题通过一个例子变得显而易见:

假设用户正在查看France>>some region>>some department. 一方面,我们应该能够让他/她看到该地区可用的自然位置(记住,一条山脉可以覆盖多个部门、地区甚至国家,甚至一条次山脉也可以做到这一点。公园或旅游区也是如此)。另一方面,他们必须了解该区域内的国家、地区和自然公园,以及这些区域内的旅游区、较小的旅游区等。

所有这些项目都必须是分类中的术语,以便用户可以查看其中可用的度假村列表。

你会如何用这些不同的方式来组织地点?请记住,主要问题是一种位置可以覆盖另一种位置的一部分,或者可以以不同的组合与其他类型的位置混合。

提前谢谢。

****UPDATE for clarity ****

该网站是关于Resorts, 这就是CPT。

行政位置、自然位置、山谷、公园和旅游区都是位置,所以分类法。我猜每种位置都是不同的层次分类法。

这里的主要问题如下示例所示,这是一个真实的问题:

用户正在查看country-1>>region-1>>department-1.

比如说,在这个部门regional-park-1. 因此,一个明显的要求是在菜单或选项下拉列表中向用户显示此可选位置。如果用户单击,他/她将在中看到度假村列表regional-park-1. 这很简单。

其复杂性在于:让我们这样说regional-park-1 还包括另一个部门department-2 分类术语。因此,当用户处于regional-park-1, 我们需要他/她看到department-1department-2 在我们的菜单/选项中。但是自从regional-park-1 只能属于这两个部门中的一个,我们有一个问题。一种解决方案是将公园作为另一种分类法,并使其术语与admin-locations 在这种情况下,分类法department-1department-2.

这很容易变得更糟:有tourist-area-1 包括regional-park-1 和aregional-park-2 在它旁边。所以,当我们的用户还在regional-park-1, 我们需要(友好地)向他/她表明tourist-area-1 它有自己的度假村列表,这可能不同于所提到的其他分类术语列表。

该示例的方案为:

Tax admin-locations:    Parks:            Tourist-areas
country-1
    region-1
        department-1____regional-park-1____tourist-area-1
        department-2____regional-park-1
        another dept____regional-park-2____tourist-area-1
这可能会变得更加复杂valleys 甚至可以属于三个不同的countries, Resorts (cpt)属于多个country, tourist areas 在…内greater tourist areas, regional parks 属于national parks 同时延伸到边境以外regional park 另一个的country 但现在这部分是not 在a中national park, 等

我们必须找到一种方法来关联分类法,因此,当用户在任何分类法术语上查看该位置的度假村列表时,显示它们dinamically 有哪些其他相关位置可用。

所以,问题是,你将如何组织工作来实现这一目标。

谢谢

1 个回复
SO网友:Mihai Papuc

按如下方式设置系统:

  • locations - CPTadministrative - 层次分类法natural - 层次分类法type - 非层次分类法administrative 分类法,您可以创建树:第一级的国家、第二级的地区、部门等等。然后,您可以将位置分配给分类法中最小的管理名称,如示例中的部门。接下来,在分类页面中list all posts in that taxonomy and its children (这实际上是默认设置)。

    同样的方法也适用于natural 分类学尽可能深入,并将帖子附加到分类树的“叶子”上。

    至于types 对于位置,您不会有单独的分类页面,而是在administrativenatural 分类法将您的视图过滤到确切的位置类型:酒店、公园等。

    UPDATE:

    分类法用于分类,我认为将不同分类树的叶子链接起来不是一个好主意。好吧,WP也不允许这样。

    但你没有义务限制自己只接受一次CPT。我看你的处境,你有resorts CPT,但您还应该为parkstourist areas. 这样,您总共有3个CPT,所有CPT共享2个自定义分类法:adminnatural.

    之后,您需要将这些CPT中的一些链接在一起。我可以想出三种可能的解决方案:

    使用其地理位置:添加ACF Google Map field 对于每个帖子,保存latlng 在单独的元字段中(ACF将地址、lat和lng存储在序列化字段中,因此您无法查询它们),然后使用$wpdb->get_results 直接查询数据库并按距离获取您的CPT(请参阅Distance between Latitude and Longitude Coordinates in SQLMySQL calculate distance between two latitude/longitude coordinates).Posts 2 Posts: 这曾经很好用,而且,好吧,现在仍然如此,但是插件的作者两年前就停止支持它了。从我几个月前的研究来看,没有比链接帖子更好的选择,无论是免费的还是付费的ACF Relationship fields + ACF Post-2-Post. 此插件仅适用于ACF v.5,因此您需要使用PRO version of ACF, 或download the free variant of v.5.x 从他们的站点,如WP插件库they still have v.4.x.

  • 根据您的具体需求和能力,您可以使用上述任何方法,甚至可以将#1与#2或#3结合使用。

结束

相关推荐

Complex Taxonomy scheme - 小码农CODE - 行之有效找到问题解决它

Complex Taxonomy scheme

时间:2017-09-01 作者:Karls

我们正在建设一个度假村网站,我们面临着一个巨大的分类问题。

一方面,我们有行政办公地点,如country>>region>>department 和“自然”位置,如mountain-range>>sub-mountain range. 这可以通过安排两种不同的分类法来进行分类,例如管理位置和自然位置。这听起来很容易,但当你意识到一些度假胜地共享两个或多个地方时,就不那么容易了。甚至有一个度假村同时属于三个欧洲国家!

但我们也在处理其他类型的地点,如国家公园(例如,可以覆盖两个或多个地区或部门)、区域公园、自然公园、旅游区和次区域,甚至山谷、湖泊或只能贴上“其他”类特殊标签的项目。

因此,我们能想到的唯一解决方案是构建更多的分类法,并添加一些术语元,通过链接不同分类法的术语来组织所有这些混乱。比方说,你想列出一些国家公园中有哪些度假村,这些国家公园覆盖两个地区,同时位于两个不同的旅游区,同时也是一个较大的多个度假区的一部分,还有其他五个度假村。

实际上,我们有几十起这样的案件。例如,我们希望用户看到一个菜单,其中包含一些不同的选项下拉列表,告诉他们自己的选项。

今天我的问题不是关于建立这样一个菜单。它是关于如何组织分类混乱。我们知道,当您有post和term meta时,查询时会出现性能和规模问题,因此这对我们来说是一个有点复杂的问题。我们曾认为,我们可以将不同分类法的术语与术语meta“连接”,但我们不完全确定其确切程度,以及它是否易于查询和排序。

我们的问题通过一个例子变得显而易见:

假设用户正在查看France>>some region>>some department. 一方面,我们应该能够让他/她看到该地区可用的自然位置(记住,一条山脉可以覆盖多个部门、地区甚至国家,甚至一条次山脉也可以做到这一点。公园或旅游区也是如此)。另一方面,他们必须了解该区域内的国家、地区和自然公园,以及这些区域内的旅游区、较小的旅游区等。

所有这些项目都必须是分类中的术语,以便用户可以查看其中可用的度假村列表。

你会如何用这些不同的方式来组织地点?请记住,主要问题是一种位置可以覆盖另一种位置的一部分,或者可以以不同的组合与其他类型的位置混合。

提前谢谢。

****UPDATE for clarity ****

该网站是关于Resorts, 这就是CPT。

行政位置、自然位置、山谷、公园和旅游区都是位置,所以分类法。我猜每种位置都是不同的层次分类法。

这里的主要问题如下示例所示,这是一个真实的问题:

用户正在查看country-1>>region-1>>department-1.

比如说,在这个部门regional-park-1. 因此,一个明显的要求是在菜单或选项下拉列表中向用户显示此可选位置。如果用户单击,他/她将在中看到度假村列表regional-park-1. 这很简单。

其复杂性在于:让我们这样说regional-park-1 还包括另一个部门department-2 分类术语。因此,当用户处于regional-park-1, 我们需要他/她看到department-1department-2 在我们的菜单/选项中。但是自从regional-park-1 只能属于这两个部门中的一个,我们有一个问题。一种解决方案是将公园作为另一种分类法,并使其术语与admin-locations 在这种情况下,分类法department-1department-2.

这很容易变得更糟:有tourist-area-1 包括regional-park-1 和aregional-park-2 在它旁边。所以,当我们的用户还在regional-park-1, 我们需要(友好地)向他/她表明tourist-area-1 它有自己的度假村列表,这可能不同于所提到的其他分类术语列表。

该示例的方案为:

Tax admin-locations:    Parks:            Tourist-areas
country-1
    region-1
        department-1____regional-park-1____tourist-area-1
        department-2____regional-park-1
        another dept____regional-park-2____tourist-area-1
这可能会变得更加复杂valleys 甚至可以属于三个不同的countries, Resorts (cpt)属于多个country, tourist areas 在…内greater tourist areas, regional parks 属于national parks 同时延伸到边境以外regional park 另一个的country 但现在这部分是not 在a中national park, 等

我们必须找到一种方法来关联分类法,因此,当用户在任何分类法术语上查看该位置的度假村列表时,显示它们dinamically 有哪些其他相关位置可用。

所以,问题是,你将如何组织工作来实现这一目标。

谢谢

1 个回复
SO网友:Mihai Papuc

按如下方式设置系统:

  • locations - CPTadministrative - 层次分类法natural - 层次分类法type - 非层次分类法administrative 分类法,您可以创建树:第一级的国家、第二级的地区、部门等等。然后,您可以将位置分配给分类法中最小的管理名称,如示例中的部门。接下来,在分类页面中list all posts in that taxonomy and its children (这实际上是默认设置)。

    同样的方法也适用于natural 分类学尽可能深入,并将帖子附加到分类树的“叶子”上。

    至于types 对于位置,您不会有单独的分类页面,而是在administrativenatural 分类法将您的视图过滤到确切的位置类型:酒店、公园等。

    UPDATE:

    分类法用于分类,我认为将不同分类树的叶子链接起来不是一个好主意。好吧,WP也不允许这样。

    但你没有义务限制自己只接受一次CPT。我看你的处境,你有resorts CPT,但您还应该为parkstourist areas. 这样,您总共有3个CPT,所有CPT共享2个自定义分类法:adminnatural.

    之后,您需要将这些CPT中的一些链接在一起。我可以想出三种可能的解决方案:

    使用其地理位置:添加ACF Google Map field 对于每个帖子,保存latlng 在单独的元字段中(ACF将地址、lat和lng存储在序列化字段中,因此您无法查询它们),然后使用$wpdb->get_results 直接查询数据库并按距离获取您的CPT(请参阅Distance between Latitude and Longitude Coordinates in SQLMySQL calculate distance between two latitude/longitude coordinates).Posts 2 Posts: 这曾经很好用,而且,好吧,现在仍然如此,但是插件的作者两年前就停止支持它了。从我几个月前的研究来看,没有比链接帖子更好的选择,无论是免费的还是付费的ACF Relationship fields + ACF Post-2-Post. 此插件仅适用于ACF v.5,因此您需要使用PRO version of ACF, 或download the free variant of v.5.x 从他们的站点,如WP插件库they still have v.4.x.

  • 根据您的具体需求和能力,您可以使用上述任何方法,甚至可以将#1与#2或#3结合使用。

相关推荐