is_single() - Проверяет находимся ли пользователь на странице записи.
is_front_page() или is_home() - Проверяет находимся ли пользователь на главной странице сайта.
is_category() - Проверяет находимся ли пользователь на странице категорий.
is_archive() - Проверяет находимся ли пользователь на странице архива.
is_search() - Проверяет находимся ли пользователь на странице поиска.
is_paged() - Проверяет находимся ли пользователь на странице с пагинацией (адрес типа: /раздел/2, /раздел/3).
is_404() - Проверяет находимся ли пользователь на странице с ошибкой "404 - Документ не найден".
Теперь посмотрим, как с помощью этих тегов мы можем запрограммировать файл темы "index.php", чтобы он отображал запись отдельно и список записей по-разному. Для этого воспользуемся условным тегом "is_single()":
<!DOCTYPE html>
<html>
<head>
...
<?php wp_head(); ?>
</head>
<body>
<header class="header">
<h1><?php bloginfo( 'name' ); ?></h1>
<h2><?php bloginfo( 'description' ); ?></h2>
</header>
<div class="content">
<?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>
<?php wp_footer(); ?>
</body>
</html>
Посмотрите на организацию главного цикла WordPress в этом коде. Если пользователь находится на странице со списком публикаций, то будет выводиться заголовок <h3> с ссылкой на страницу детального просмотра. А если пользователь уже находится на странице детального просмотра, то будет выводиться заголовок статьи в теге <h1> (без ссылок).
Но приведённый пример - это не единственный способ организации темы. В WordPress есть ещё встроенные механизмы для файлов. К примеру, если в папке с темой есть файл single.php, то он будет принудительно использован для страниц с содержанием одной публикации. Если же этого файла нет, то используется index.php.
Аналогичный механизм действует для категорий. То есть если в папке с темой есть файл category.php, то будет использоваться он. А если нет, то index.php.
Теперь поверхностно узнав подобный механизм приоритетов, давайте ещё чуть углубимся в него. А точнее в то, как выбираются файлы для подключения в зависимости от страницы (архив/список/одна запись и т.п.). Файлы подключаются в следующей последовательности:
- category-mark.php
- category-id.php
- category.php
- archive.php
- index.php
Файл "category-id.php" должен иметь вместо "id" в своём названии порядковый номер рубрики. Этот порядковый номер можно узнать на странице со списком рубрик. Логика использования аналогична файлу "category-mark.php". То есть если рубрика имеет id равным 53, то WordPress при загрузке страницы из этой рубрики проверит существование файла "category-53.php". Если такой файл существует, то он будет использован. Если такого файла нет, то будет проверен следующий файл на существование: "archive.php". Если и его не окажется, то будет использован "index.php".
Иерархии для разных страниц и файлов
Вышеприведённый пример неполный. Потому что список иерархий зависит от типа запрашиваемой информации. Существует даже иерархия для отображения файлов (вложений).Приведём несколько списков файлов иерархии ниже. Как и ранее, файлы должны находиться в корневой папке темы. Файлы подключаются по порядку (по списку) с убыванием значимости (от первого к последнему).
Одна страница (запись page):
- page-ярлык.php
- page-id.php
- page.php
- singular.php
- index.php
- single-post-ярлык.php
- single-post.php
- single.php
- singular.php
- index.php
- single-тип_публикации-ярлык.php
- single-тип_публикации.php
- single.php
- singular.php
- index.php
- category-ярлык.php
- category-id.php
- category.php
- archive.php
- paged.php (на постраничной навигации)
- index.php
- tag-ярлык.php
- tag-id.php
- tag.php
- archive.php
- paged.php (на постраничной навигации)
- index.php
- archive-ярлык_ТИПА.php
- archive.php
- paged.php (на постраничной навигации)
- index.php
- author-ник_автора.php
- author-id.php
- author.php
- archive.php
- paged.php (на постраничной навигации)
- index.php
- date.php
- archive.php
- paged.php (на постраничной навигации)
- index.php
- 404.php
- index.php
- search.php
- index.php
- front-page.php
- home.php
- index.php
- home.php
- index.php
- mime_тип_файла.php
- attachment.php
- single-attachment-ярлык_ВЛОЖЕНИЯ.php (используется для отображения отдельного файла)
- single-attachment.php
- single.php
- singular.php
- index.php