用于多个定制帖子类型单一的相同模板

时间:2015-12-04 作者:stlawrance

我知道我们可以single-custom-post.php 但我有多个自定义帖子类型

america
nepal
norway
我能做到single-america.php , single-nepal.phPsingle-norway. 但他们基本上都有相同的违规行为DRY. 我目前正在从插件注册这样的帖子。如何在名为的插件中为他们显示模板single-country.php?

我想我们可以template_include 滤器但我还是不知道该怎么做?

像这样试过

add_filter( \'template_include\', function ( $template  ) {
    $cpt=["america","nepal","norway"]
    if ( //how to check condition if it is custom post type single ) {
        return ADVANCED_NOTES_DIR . \'country-single.php\';
    }
    return $template ;
}) ;
那么,我们可以对多个自定义帖子类型使用相同的模板吗?

谢谢:)

1 个回复
SO网友:gmazzap

是的,你可以用template_include 或者更具体的single_template.

示例代码:

add_filter( \'single_template\', function( $template ) {

  $cpt = [ \'america\', \'nepal\', \'norway\' ];

  return in_array( get_queried_object()->post_type, $cpt, true )
    ? \'path/to/country-single.php\'
    : $template;

} );
single_template 过滤器仅针对单一查询运行,因此您不需要检查您是否在单一视图上,只需检查所查询的帖子类型是否是要替换模板的CPT之一。

我用过get_queried_object() 对于范围。

相关推荐

是否可以取消对特定帖子类型的POSTS_PER_PAGE限制?

我想知道我是否可以取消特定帖子类型的posts\\u per\\u页面限制。在存档中。php页面我显示不同的帖子类型,对于特定的“出版物”帖子类型,我想显示所有帖子。我如何在不影响传统“post”类型的情况下实现这一点?