在此场景中,我将如何利用定制分类?

时间:2012-04-19 作者:Honus Wagner

两层研究:

我正在为一位专门从事研究旅行的客户建立一个网站。他们提供两级研究协助,“标准”和“高级”。这些服务级别中的每一个都有入住率变化,例如单人或双人。虽然这些功能共享名称和其他属性,但它们在每次旅行的价格上是特定的。

没有分类法的自定义帖子类型

我为“创建了自定义帖子类型”Trip“和Trip具有名为”Packages“。我不是在寻找一个神奇的解决方案来解决所有问题;我不介意(用户也不介意)将每个组合添加为一个行项目。

我可以创建Trips和Package这样很好,并相应地将它们联系起来。但是,开箱即用(不使用分类法)的URL如下所示:

  • http://exmple.com/trips/fall-2012/ - 这将显示行程的详细信息。我有一个自定义内容模板来显示上面相应定义的子包
  • http://exmple.com/packages/ - 这列出了我为所有旅行创建的所有套餐。具有相同名称的包(即单一注册)的结果如下/packages/single-registration-2//single-registration-3/

    • trip - service level - occupancy

    示例

    我真正想看到的是:

    • http://exmple.com/trips/ - 这将显示所有顶级旅行,例如2012年秋季、2013年春季、2013年秋季http://exmple.com/trips/fall-2012/ - 这将显示该行程的所有包裹。服务水平和入住率的所有组合。This is really as far as I would need to go. I plan on offering a list of all packages here and allowing the user to choose one.
    从逻辑上讲,其余的URL看起来是这样的(虽然我不打算需要导航到这么深)

    • http://exmple.com/trips/fall-2012/standard/
    • http://exmple.com/trips/fall-2012/standard/single-occupancy/
    • http://exmple.com/trips/fall-2012/standard/double-occupancy/
    • http://exmple.com/trips/fall-2012/premium/
    • http://exmple.com/trips/fall-2012/premium/single-occupancy/
    • http://exmple.com/trips/fall-2012/premium/double-occupancy/
1 个回复
SO网友:henrywright

首先,我将创建一个名为Trips的新自定义帖子类型。将此添加到主题的功能中。php

//trips Custom Post Type
add_action( \'init\', \'create_trips_post_type\' );
function create_trips_post_type() {
register_post_type( \'trips\',
    array(
        \'labels\' => array(
            \'name\' => __( \'Trips\' ),
            \'singular_name\' => __( \'Trips\' )
        ),
    \'public\' => true,
    \'has_archive\' => true, 
    \'hierarchical\' => true,
    \'supports\' => array( \'title\', \'editor\', \'author\', \'thumbnail\', \'custom-fields\', \'excerpt\'),
    \'rewrite\' => array(\'slug\' => \'trips\'),
    )
);
}

然后,我将创建一个名为“tripdetails”的新自定义分类法。将此添加到主题的功能中。php

//tripdetails custom taxonomy
function tripdetails_init() {
// create a new taxonomy
register_taxonomy(
    \'tripdetails\',
    array(\'trips\'),
    array(
        \'label\' => __( \'Trip Details\' ),
        \'sort\' => true,
        \'args\' => array( \'orderby\' => \'term_order\' ),
        \'hierarchical\' => true,
        \'rewrite\' => array( \'hierarchical\' => true, \'slug\' => \'tripdetails\' ), 
    )
);
}
add_action( \'init\', \'tripdetails_init\' );
然后,您可以使用自己选择的术语和子术语填充自定义分类法。

然后,当您使用全新的自定义帖子类型创建一个新的“Trip”时,您只需使用全新的自定义分类中的术语和子术语对其进行标记。

你最终会得到这样的URL(其中将包含你的“旅行”列表,并用适当的术语标记)

http://example.com/tripdetails/top-level-term/second-level-term/

结束

相关推荐

If search matches taxonomy

如果搜索输入与分类名称完全匹配,是否可以将用户重定向到分类页面?例如,我有一个称为“参与者”的分类法。如果有人在搜索字段中输入“Tom Hanks”,而不是进入常规搜索页面,则会将他们重定向到Tom Hanks的分类页面。