道歉,如果这看起来有些简单,但是我已经缩放了很多,并且没有找到解决问题的方法,
我有一个使用Wordpress设置的网站,其中的帖子可以归为以下三个类别之一:评论,视图,新闻-与这些类别名称中的每个类别名称相关的标签都是相同的。
当前,调出属于这些类别中任何一个类别的任何帖子的网页,都会看到它由single.php文件呈现。
但是,当帖子属于“评论”类别时,我想对其稍作调整。我已将原始single.php文件复制并重命名为single-post-reviews.php(此处没有自定义帖子,我只是确认,如果可能的话,我希望避免在这里出现儿童主题-不好的做法,我知道),但我没有从新文件中看到新的渲染。
我还尝试过重命名为single-reviews.php,但该方法也不起作用-有人可以告诉我我在这里到底缺少什么吗?
谢谢
答案 0 :(得分:0)
Single Posts的WordPress模板层次结构未考虑当前帖子类别(可能是由于您可以具有多个类别)。因此,您有2个可行的解决方案。
1)您可以修改single.php
来检查帖子类别,如果它属于reviews
下的类别,请执行某些操作。如果您只是在一个或两个位置添加少量标记,或者甚至有条件地隐藏几行,这是有道理的。
2)您可以使用single_template
过滤器来覆盖基于帖子类别加载的页面模板。因为我不完全知道您在做什么,所以我将详细介绍这种方法。请执行以下功能:
add_filter( 'single_template', 'so51913799_review_template' );
function so51913799_review_template( $single_template ){
global $post;
if( has_category( 'reviews' ) ){
$single_template = get_stylesheet_directory() . '/single-post-reviews.php';
}
return $single_template;
}
如果将其放在functions.php
文件中,它将利用has_category()
函数(我更喜欢in_category()
,因为in_category
仅返回{{1} }),如果匹配,它将把has_category
变量更新为$single_template
。假设文件位于您的single-post-reviews.php
目录中。