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

Темы WordPress - это набор файлов. Как исполняемых, так и статичных. Для отображения разных страниц сайта используются так называемые условные теги. По сути это функции, которые возвращают логические "true" или "false" в зависимости от того, на какой странице находится пользователь. В статье "Функции вне цикла Wordpress" мы уже рассматривали часть условных тегов. Повторим их:

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-mark.php", наименьший - "index.php". Для самого значимого файла "category-mark.php" часть "mark" - это так называемый "Ярлык" категории, который можно установить через панель администрирования, при редактировании свойств категории. Если вы присвоили категории ярлык "business", то при загрузке публикаций из этой категории в папке с темой будет проверяться существование файла "category-business.php". Если такого файла нет, то будет проверяться следующий по значимости файл из иерархии: "category-id.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
Одна публикация (запись post):
  • 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 страница:
  • 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
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб