如何在相同版面中呈现相同类别的所有帖子?

时间:2015-12-17 作者:Boykodev

我有几个帖子共享相同的布局,但标题和内容不同。

此布局与网站上的布局不同。

我可以用单曲。php来呈现它们,但所有帖子都会有这种布局。

如果我为这篇文章添加了一些类别,我能以相同的方式呈现这一类别中的所有文章吗?

我尝试使用category-{category name}。但是它只是呈现了这个类别的页面。

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

我相信你说的是单帖页面。模板层次结构没有根据帖子所属的类别提供单个模板,因此single-{$category}.php 不存在。

制作single-{$category}.php 工作,我们可以利用single_template 滤器

add_filter( \'single_template\', function ( $template )
{
    global $post;
    // Check if our post has our specific category
    if ( !has_category( 1, $post ) ) // Change to your specific category
        return $template;

    // Locate and load our single-{$category}.php template
    $locate_template = locate_template( \'single-my_category.php\' ); // Change to your exact template name
    if ( !$locate_template ) 
        return $template;

    // single-my_category.php exists, load it
    return $locate_template;
});
现在,您只需创建我们自己的自定义单个模板,并将其用于属于您需要针对的特定类别的任何单个帖子

SO网友:Craig

类别模板仅用于发布归档列表,您需要在单个目录中执行此操作。php模板。

您可以在单个中使用has\\u category()。php模板来检测帖子是否有类别。然后只包含不同的文件。例如:

if ( has_category( $category, $post ) ) {
    include "template-one.php";
} else {
    include "template-two.php";
}
参考号:https://codex.wordpress.org/Function_Reference/has_category