我当前正在使用archive.php
作为类别、标记、作者等的通用列表,我的自定义帖子类型有一个非常定制的归档页面,与archive.php
.
我想知道是否有一种方法可以创建一个归档文件,作为only 我的自定义帖子类型。如果它包含在模板层次结构中,则可能会调用它archive-post-type.php
或post-type.php
.
我知道我可以使用includes或get_template_part
, 但它实际上只是跨多个帖子类型的同一个归档文件,所以我宁愿为所有帖子类型创建一个文件。理想情况下,此CPT存档模板仍可以由archive-$posttype.php
.
如果我利用archive.php
相反,对于自定义帖子类型,我会遇到同样的问题,因为category.php
, tag.php
, date.php
, 等等都是相同的模板,但仍然不同于archive.php
.
最合适的回答,由SO网友:Brad Dalton 整理而成
add_filter( \'template_include\', \'wpsites_cpt_archive_page_template\', 99 );
function wpsites_cpt_archive_page_template( $template ) {
if ( is_post_type_archive() ) {
$new_template = locate_template( array( \'your-cpt-template.php\' ) );
if ( \'\' != $new_template ) {
return $new_template ;
}
}
return $template;
}
在函数文件中尝试此操作。
您可以将您的帖子类型添加到此行,如下所示:
if ( is_post_type_archive(array( first-post-type, second-post-type ) ) ) {
使用
is_post_type_archive
&;
template_include
SO网友:Pieter Goosen
如果我理解正确的话,我认为布拉德的答案指向了正确的方向。
我真的认为您需要重新考虑模板的使用。使用archive.php
作为所有其他归档类型的模板会对一种样式造成很大的限制。创建所有这些归档类型模板更容易,并为更广泛地使用您的内容和样式创造了机会。你可以简单地复制arhive.php
并将其重命名category.php
例如,它就是那么简单。您只需为每种归档类型采用样式
这也为Template Hierarchy. 我不打算深入讨论这个问题,您可以按照提供的链接进行研究:-)
模板层次结构没有为archive.php
模板,您有两个选择,archive.php
或archive-{$post_type}.php
. 您可以跳出这一步,但随后需要重定向和模板包含(正如Brad指出的那样),这会不必要地阻塞您的函数文件。为什么要使用额外代码?
我真的认为您最好的答案是使用模板层次结构中可用的不同模板。它将节省您编写不必要的代码的时间,当您删除不必要的代码时,它会更快,当涉及到个人样式时,它会给您更多的自由,并且不会太令人困惑。因此,为每种帖子类型创建一个归档模板,保持在模板层次结构中,我敢打赌你会不会有那么多麻烦事