Как применить шаблон родительской категории для дочерней категории в WordPress? - PullRequest
0 голосов
/ 10 октября 2019

Я попытался создать собственный шаблон для указанной категории, моя категория - это новости, и я создал шаблон с именем "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 голосов
/ 11 октября 2019

Может быть, вы можете попробовать следующее:

Создайте новый файл с именем 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';
}

Примечание:Я не проверял это, но концепция ясна.

...