类别页面上的自定义发布类型

时间:2011-02-22 作者:Kelvin Jayanoris

我正在使用一种使用普通WordPress类别的自定义帖子类型
我可以修改我的类别模板,以准确显示我的自定义帖子类型。

问题是,一旦我这样做,正常的博客帖子也会受到影响。

当然,我可以将普通博客帖子或帖子类型限制为一个类别,并创建一个category-ID.php来处理该类别。

但我想知道是否有更灵活的解决方案
是否可以制作特定于帖子类型的类别模板,即一个用于显示帖子,一个用于显示自定义帖子类型等?

这有可能吗?如果没有,最好的解决方法是什么?

3 个回复
SO网友:eileencodes

对于具有自定义分类法的自定义帖子类型,可以为该分类法创建模板。您的自定义分类模板将命名为taxonomy-{taxonomy}.php. 例如,如果您的分类法被称为“烹饪类别”,您将命名您的文件taxonomy-cooking-categories.php.

有关特殊分类法档案的模板文件的更多信息,请参见codex:http://codex.wordpress.org/Template_Hierarchy#Custom_Taxonomies_display

SO网友:Bainternet

你可以根据帖子类型这样说:假设你有category.php 对于常规职位和your-custom-type-category.php 对于您自定义的帖子类型,只需将其添加到您的常规类别中即可。php位于最顶端。

<?php if (have_posts()){
    the_post();
    if( \'your_custom_type\' == get_post_type( $post ) ) {
        rewind_posts();
        get_template_part(\'your-custom-type-category\');
        exit();
    }
    rewind_posts();
}
?>
现在,当需要分类时,它将检查您的自定义帖子类型,如果找到,它将使用您的your-custom-type-category.php 作为模板,所有常规帖子将使用category.php 没有变化。

希望这有帮助

SO网友:MikeSchinkel

你好@Kelvin Jayanoris:

有什么原因不能只测试$post->post_type 使用if..elseif 在您的Loop, 像这样:

<?php if ($post->post_type==\'foo\'): ?>

   Put HTML for \'foo\' post type here...

<?php else if ($post->post_type==\'bar\'): ?>

   Put HTML for \'bar\' post type here...

<?php else if ($post->post_type==\'post\'): ?>

   Put HTML for \'post\' post type here...

<?php endif; ?>
或者如果有原因,您无法以文件名的形式创建自己的模板文件名层次结构,如post-foo.php, post-foo.php, post-post.php, 也在你的圈子里?这类代码可以做到这一点:

<?php include("post-{$post->post_type}.php"); ?>

结束

相关推荐

WordPress删除wp_List_Categories中最后一项的分隔符

我正在尝试删除最后一个分隔符(通常是<br/> 标记,但我将其从wp\\u list\\u categories的最后一个链接更改为“/”)。基本上我想要这个:类别1//类别2//类别3//看起来像这样:类别1//类别2//类别3以下是我当前使用的代码:<?php $cat_array = array(); $args = array( \'author\' => get_the_author_meta(\'id\'),&#x