Иерархия файлов темы WordPress

Пусть у нас есть файл шаблона index.php, в котором в Цикле WordPress с помощью функции is_single разделяется показ одной записи и показ списка записей:

<!DOCTYPE html> <html> <head> <meta charset="<?php bloginfo( 'charset' ); ?>"> <title><?php echo wp_get_document_title(); ?></title> <link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>" type="text/css" /> <?php wp_head(); ?> </head> <body> <header class="header"> <h1><?php bloginfo( 'name' ); ?></h1> <h2><?php bloginfo( 'description' ); ?></h2> </header> <div class="middle"> <?php if (have_posts()) { while (have_posts()) { the_post(); if (is_single()) { echo '<h1>'. get_the_title() .'</h3>'; echo get_the_content(); } else { echo '<h3><a href="'. get_permalink() .'">'. get_the_title() .'</a></h3>'; echo get_the_excerpt(); } } } else { echo '<p>Записей нет...</p>'; } ?> </div> <footer class="footer"> <?php echo date('Y') ?> © Я и компания моя </footer> <?php wp_footer(); ?> </body> </html>

Для разделения типов страниц (одна запись или список) можно поступить и по-другому: не использовать функцию is_single, а сделать отдельный файл с шаблоном для вывода одной записи и отдельный файл с шаблоном для вывода списка записей.

Для этого в WordPress предусмотрены специальные файлы, которые отвечают за вывод разных типов страниц.

К примеру, если в папке с темой будет файл single.php, то именно он будет отвечать за показ страницы с одной записью, а не файл index.php.

Если же файла single.php не будет, то за показ одной записи будет отвечать файл index.php. Так у нас изначально и было.

Аналогично за вывод списка записей отвечает файл category.php. При его наличии список записей будет выводится именно этим файлом, а при его отсутствии - файлом index.php.

Давайте разместим шаблон одной записи в файле single.php, а шаблон списка записей оставим в файле index.php (то есть не будем делать файл category.php - это приведет к тому, что список записей будет обрабатываться файлом index.php).

Итак, вот код страницы single.php (в цикле выводится h1 и текст записи):

<!DOCTYPE html> <html> <head> <meta charset="<?php bloginfo( 'charset' ); ?>"> <title><?php echo wp_get_document_title(); ?></title> <link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>" type="text/css" /> <?php wp_head(); ?> </head> <body> <header class="header"> <h1><?php bloginfo( 'name' ); ?></h1> <h2><?php bloginfo( 'description' ); ?></h2> </header> <div class="middle"> <?php if (have_posts()) { while (have_posts()) { the_post(); echo '<h1>'. get_the_title() .'</h3>'; echo get_the_content(); } } else { echo '<p>Такой записи не существует...</p>'; } ?> </div> <footer class="footer"> <?php echo date('Y') ?> © Я и компания моя </footer> <?php wp_footer(); ?> </body> </html>

А вот новый код страницы index.php (в цикле выводится заголовок-ссылка h3 и короткое описание):

<!DOCTYPE html> <html> <head> <meta charset="<?php bloginfo( 'charset' ); ?>"> <title><?php echo wp_get_document_title(); ?></title> <link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>" type="text/css" /> <?php wp_head(); ?> </head> <body> <header class="header"> <h1><?php bloginfo( 'name' ); ?></h1> <h2><?php bloginfo( 'description' ); ?></h2> </header> <div class="middle"> <?php if (have_posts()) { while (have_posts()) { echo '<h3><a href="'. get_permalink() .'">'. get_the_title() .'</a></h3>'; echo get_the_excerpt(); } } else { echo '<p>Записей нет...</p>'; } ?> </div> <footer class="footer"> <?php echo date('Y') ?> © Я и компания моя </footer> <?php wp_footer(); ?> </body> </html>

Сделайте отдельный шаблон для записей вашего сайта.

Сделайте отдельный шаблон для рубрик вашего сайта.

Иерархия файлов темы

По следующей ссылке расположено описание всей иерархии файлов темы ссылке.

Изучите иерархию файлов темы, попробуйте самостоятельно что-нибудь из изученного (все не нужно).