Иерархия файлов темы 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мотрите другие статьи: