按类别选择自定义帖子类型模板

时间:2013-07-22 作者:Ristana

我需要用不同的模板设计我的公文包帖子。我的想法是按类别进行。我试过使用in_categoryis_category 还有很多其他的变通方法,但都没有用。我的single.php 文件当前为:

<?php if ( \'\' != locate_template( \'content-\'.get_post_type().\'.php\' ) ) // Check if themplate exists esle get default post content
  {
     get_template_part( \'content\', get_post_type() );
  } else {
      get_template_part( \'content\', \'post\' );
  }
?>
虽然我似乎理解它所做的事情,但似乎无法提出一个条件,允许它检查类别并相应地返回模板。

我该怎么办?

1 个回复
SO网友:Fränk

使用single。带有条件模板部分包含的php用于显示自定义帖子类型的特定布局,这不是正确的方法。

WordPress有一个叫做Template Hierarchy. 正确的方法是创建single-name-of-your-cpt.php 显示单个portofolio项目。这同样适用于自定义post类型存档。

第二个问题是,类别是内置的分类法。类别存档页使用archive.php 模板,但您不会在那里看到您的自定义帖子类型,因为只包含帖子。您始终可以通过pre_get_posts 行动,但我不认为这是你想要的。

对于您的情况,最好使用Custom Taxonomy.

假设您有一个名为portfolio 还有一种自定义分类法portfolio-category.

通过这种设置,您可以使用archive-portfolio.php 显示所有公文包帖子和taxonomy-portfolio-category.php 显示特定投资组合类别中的投资组合帖子。您甚至可以通过这种方式为某些投资组合类别创建归档模板。

对于单个视图,请使用single-portfolio.php 和使用has_term() 要检查帖子是什么公文包类别,并以这种方式包括相应的模板部分,请确保有一个默认布局作为回退。

结束

相关推荐

Resort get_categories

我有一个get\\u categories数组$args=array( \'orderby\' => \'id\', \'order\' => \'ASC\', \'taxonomy\' => \'wpsc-variation\', \'hierarchical\' => 1, \'hide_empty\' => 0 ); $variationCategories=get_cate