您不必使用WordPress标准Tempate来管理同一自定义帖子类型的多个分类法模板。
假设您有:1)portfolio
带1)的CPTpcat
分类法和在此分类法中创建的3个“站点”、“应用程序”和“设计”术语(此处显示了slug)。
Case 1: 您可能希望为其中任何一个显示相同的模板pcat
分类法。只需使用相同的单曲portfolio-signle.php
包含显示任何单个portfolio
统一记录。
Case 2: 现在假设您想为每个portfolio
CPT记录取决于pcat
分配给该记录的分类术语(“站点”、“应用程序”、“设计”、“任何内容”)。
您可以使用相同的portfolio-signle.php
每个都有额外的部分模板pcat
学期
你的portfolio-signle.php
必须保存此代码:
<?php
get_header();
// Here you get the particular record of the `portfolio` CPT.
global $post;
// Get the array of \'pcat\' taxonomy terms attached to the record
// and take the slug of first term only (just for brevity)
$txslug = get_the_terms($post, \'pcat\')[0]->slug;
// Dynamically prepare the file name
$filename = get_template_directory() . \'/partials/_portfolio-single-\'.$txslug.\'.php\';
// Check if the file exists & readable
if (is_readable($filename)) {
// The case when you created the sub-template partial for the particular `pcat` term.
include get_template_directory() . \'/partials/_portfolio-single-\'.$txslug.\'.php\';
} else {
// The case for all other `pcat` taxonomy terms.
include get_template_directory() . \'/partials/_portfolio-single-other.php\';
}
get_footer();
正如您从上面的代码中看到的,您必须为每个
pcat
分配给帖子的分类术语实际上会处理分类术语的外观。
或/并创建/partials/portfolio-single-other.php
以统一的方式处理所有术语。
这将使您的主题文件保持良好的组织,并且无需代码开销,允许您灵活地管理不同分类术语的外观”。
注意:别忘了重新申报global $post;
在您的\'/partials/_portfolio-single-\'.$txslug.\'.php\'
模板。您将获得对要显示的CPT对象的访问权,无需支付额外费用。