Если лень разбираться с
иерархией шаблонов, коротко раскажу как сделать шаблон без этого. Для начала надо придумать какой будет структура шаблона, пускай это будет, как написано в комментариях это 2 различных типа данных +
index.php:
- Основной файл шаблона index.php
- Статическая домашняя страница
- Страница с циклом вывода всех записей блога
и структура файлов в шаблоне будет такая:
- /index.php
- /template_parts/home_page.php
- /template_parts/blog_archive.php
- /template_parts/blog_single.php
- /template_parts/main_header.php
- /template_parts/main_footer.php
index.php:
get_template_part('template_parts/main', 'header');
if ( is_front_page() || is_home() ){
// Homepage - начальная статическая страница
get_template_part('template_parts/home', 'page');
} else {
if(get_post_type() == 'post' && is_archive() && !is_author()){
//Список всех записей блога (Blog Archive)
get_template_part('template_parts/blog', 'archive');
}
if(get_post_type() == 'post' && is_single()){
//Одиночная запись блога
get_template_part('template_parts/blog', 'single');
}
//Вариантов вывода может быть множество (смотри документацию):
if(is_page() && !is_search() && !is_page_template() && !is_404()){ }
if(get_post_type() == 'my_custom_post_type_name' && is_single()){ }
if(is_404()){ }
if(is_search()){ }
if (is_archive() && is_author()){ }
if(is_page_template('my_custom_template_name.php')) { }
}
get_template_part('template_parts/main', 'footer');
blog_archive.php:
if ( have_posts() ) : while ( have_posts() ) : the_post();
//В этом цикле выводим посты блога, например:
echo 'Заголовок: ' . get_the_title() . ', текст: ' . get_the_excerpt();
endwhile; else:
_e('Sorry, no posts matched your criteria.');
endif;
//Сбрасываем цикл, если будем запускать повторный цикл с другими параметрами на этой же странице:
wp_reset_query();
blog_single.php и
home_page.php:
while (have_posts()) : the_post();
//Выводим содержание поста:
the_content();
endwhile;
Один раз написав шаблон "с нуля" Вы будете знать как работает каждая строчка кода и проблем больше не будет.