如何在Wordpress中将父类别模板应用于子类别?

时间:2019-10-10 18:51:54

标签: wordpress categories

我尝试构建用于指定类别的自定义模板,我的类别是新闻,并且我创建了一个名称为“ category-news.php”的模板,在“新闻”类别中我有一些子类别,现在我想应用父类别子类别的类别模板,下面我测试此代码,但是它不起作用。

function wp_category_template() {
$category = get_queried_object();
$parent_id = $category->category_parent;
$templates = array();
if ( $parent_id == 0 ) {
$templates[] = "category-{$category->slug}.php";
$templates[] = "category-{$category->term_id}.php";
$templates[] = 'category.php';
} else {
$parent = get_category( $parent_id );
$templates[] = "category-{$category->slug}.php";
$templates[] = "category-{$category->term_id}.php";
$templates[] = "category-{$parent->slug}.php";
$templates[] = "category-{$parent->term_id}.php";
$templates[] = 'category.php';
}
return locate_template( $templates );
}
add_filter( 'category_template', 'wp_category_template' );

1 个答案:

答案 0 :(得分:0)

也许您可以尝试以下方法:

创建一个名为template-news.php的新文件,并将内容从category-news.php移至该文件。

然后是category.php,您可以检查类别是新闻还是该类别具有新闻的父类别,然后加载template-news.php文件。

在category.php中添加以下内容:

$category = get_queried_object();
$parent = false;
if ( $category->parent ) {
    $parent = get_term_by('id', $category->parent, 'category');
}
if ( is_category('news') || ( $parent && $parent->slug === 'news' ) {
    include_once get_template_directory() . '/template-news.php';
}

注意:我还没有测试过,但是概念很清楚。