自定义分类或自定义页面模板?

时间:2012-06-06 作者:Nick

我正在尝试决定是创建两个新的自定义分类法更合适,还是自定义页面模板更容易。以下是场景:

我有两种自定义贴子类型:“鸡尾酒配方”和“酿酒厂”,我在自定义分类法“酒精类型”中有大约10个术语,两种自定义贴子类型都使用这种分类法。这些条款的数量不太可能增长

对我来说,选项2更有意义,因为这样我就不会在三种不同的分类法中重复术语。此外,帖子编辑器只需为帖子添加两次标签。如果术语的数量更大,这个解决方案最初将是一项艰巨的任务,但只创建20页似乎是合理的。

你觉得怎么样?有没有更简单的方法我没想到?

1 个回复
SO网友:Milo

您可以用一个简单的get-var以更动态的方式来完成,也可以变得更复杂,创建一些重写规则来解析您自己的URL。

下面是一个快速简单的获取var方法-

假设您的分类术语位于:

example.com/alcohol-spirit-type/gin/
这将显示与分类术语关联的两种帖子类型的帖子。

现在,在每个帖子类型的末尾附加一个变量,以创建要过滤的URL,如:

// change these to reflect the actual registered names of your post types

example.com/alcohol-spirit-type/gin/?my_filter=cocktail-recipe

and

example.com/alcohol-spirit-type/gin/?my_filter=distillery
现在在主题的functions.php 文件来检测此附加变量并相应地调整查询:

function wpa54401_filter_pre_get_posts( $query ) {
    if ( isset( $_GET[\'my_filter\'] ) ) {
        $query->set( \'post_type\', array( $_GET[\'my_filter\'] ) );
    }
    return $query;
}
add_filter( \'pre_get_posts\', \'wpa54401_filter_pre_get_posts\' );
现在,访问这些URL中的每一个都应该只提供每种类型中的帖子。

EDIT-

这里有一个过滤器taxonomy_template 要返回两个新视图的自定义模板,请执行以下操作:

function wpa54401_custom_taxonomy_template( $template ) {
    if ( isset( $_GET[\'my_filter\'] ) ) {
        $template = dirname( __FILE__ ) . \'/tax-\' . $_GET[\'my_filter\'] . \'.php\';
    }
    return $template;
}
add_filter( "taxonomy_template", "wpa54401_custom_taxonomy_template" ) ;
模板应命名为tax-{your post type}.php

结束

相关推荐

显示Archives.php中的所有自定义帖子类型

我该怎么做?archive.php 只有以下内容:wp_get_archives(\'type=monthly\'); 以及wp_get_archives() 没有显示所有帖子类型的参数。我也认为archive-[post_type].php 不是我要找的,因为我希望所有帖子类型都显示在一个归档页面中。谢谢W