Шаблоны для лесоматериалов / TWIG для отдельных категорий

Итак, в стартовой теме у нас есть это:

archive.php:

$templates = array( 'archive.twig', 'index.twig' );

$context = Timber::get_context();

$context['title'] = 'Archive';
if ( is_day() ) {
    $context['title'] = 'Archive: ' . get_the_date( 'D M Y' );
} else if ( is_month() ) {
    $context['title'] = 'Archive: ' . get_the_date( 'M Y' );
} else if ( is_year() ) {
    $context['title'] = 'Archive: ' . get_the_date( 'Y' );
} else if ( is_tag() ) {
    $context['title'] = single_tag_title( '', false );
} else if ( is_category() ) {
    $context['title'] = single_cat_title( '', false );
    array_unshift( $templates, 'archive-' . get_query_var( 'cat' ) . '.twig' );
} else if ( is_post_type_archive() ) {
    $context['title'] = post_type_archive_title( '', false );
    array_unshift( $templates, 'archive-' . get_post_type() . '.twig' );
}

$context['posts'] = new Timber\PostQuery();
Timber::render( $templates, $context );

насколько я понимаю, если я перейду на http:/index.php/category/newcategory/, он должен взять файл archive-newcategory.twig в качестве шаблона. Другой пример, если я захожу на http:/index.php/category/anothercat/, он должен взять архив-anothercat.twig. Возможно ли, что я понимаю что-то не так? Потому что, если это так, моя начальная тема не работает, как задумано. Я не могу найти динамическое решение в документах, если это не то.

1 ответ

Решение

Это работает как задумано. когда is_category() верно, архив будет получать идентификатор категории через get_query_var( 'cat' )а не название категории.

Вы можете обновить код в archive.php, чтобы добавить шаблон Twig, который вы хотите использовать. Например:

else if ( is_category() ) {
    $term = new Timber\Term( get_queried_object_id() );

    $context['term']  = $term;
    $context['title'] = single_cat_title( '', false );

    array_unshift( $templates, 'archive-' . $term->slug . '.twig' );
}

Или вы также можете использовать другой шаблон PHP. Рассмотрим список шаблонов PHP на wphierarchy.com. Там вы можете увидеть, что вы можете использовать файл category.php в корне вашей темы:

$context = Timber::get_context();
$context['title'] = single_cat_title( '', false );

Timber::render( 'archive-category.twig', $context );
Другие вопросы по тегам