Построение шаблонов темы WordPress. Индекс
Продолжаем процесс построения шаблона WordPress для нашего сайта. В прошлой статье было рассмотрено построение хедера, а именно файла шаблона header.php. Пришло время заняться главным шаблоном вордпрессовской темы – index.php.
Файл index.php
Файл index.php является основным файлом темы, потому что именно на его основе строится типичная страница сайта WordPress. Обычно для различных типов страниц используются различные шаблоны. Но в принципе тех или иных файлов шаблонов может и не быть. В этом случае страницы тех типов, для которых отсутствует собственный шаблон, используют шаблон, который задается по умолчанию. Именно таким шаблоном является файл index.php.
Вообще говоря, для главной страницы сайта WordPress должен использоваться шаблон home.php. Но часто она строится на базе шаблона index.php. Что представляет собой этот шаблон?
Это шаблон, в котором происходит сборка всех составных частей страницы WordPress, а именно, заголовка, сайдбара, футера и основного контента. Сайдбар и футер мы рассмотрим чуть позже, сейчас это не так важно. Главное, они должны присутствовать среди файлов темы. Что касается основного контента страницы, то для него отдельного файла не существует. Действительно, основной контент уникален, и для каждой страницы он свой. Поэтому хранится он не в шаблоне, а в базе данных MySQL.
Создаем пустой файл index.php, и включаем в него следующие строки:
<?php get_header(); ?>
<div id=”content”>
<!-- … цикл wordpress … -->
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Это каркас для нашего файла. При сборке страницы препроцессор берет файлы хедера, сайдбара и футера, и включает их в страницу «как есть». Что касается основного контента страницы, то он считывается из базы данных, и вставляется в страницу между хедером и сайдбаром. А для того чтобы это сделать, в текст шаблона включается так называемый цикл WordPress (Loop).
Цикл Вордпресса – специфическая конструкция, без которой не обходится ни одна из страниц сайта WordPress. Цикл включает в себя несколько строк кода, выполняющих много различных функций. Он имеет достаточно стандартную форму. Приступим к построению цикла.
Начинается цикл с конструкций if и while
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
Здесь проверяется, есть ли посты для публикации, и если да, то они выводятся на страницу в том количестве, как это задается в настройках админ панели WordPress.
Для каждого поста необходимо вывести его название и ссылку на отдельную страницу поста.
<div><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></div>
И название, и адрес страницы выводятся с помощью специальных функций WordPress.
Далее обычно идет метасекция, где выводятся такие данные, как категория, автор поста, время и дата поста, ссылка для редактирования поста и сведения о комментариях к данному посту.
Опубликовано в <?php the_category(', ') ?> автором <?php the_author() ?> <?php the_time('F jS, Y') ?> | <?php edit_post_link('Редактировать', '', ' | '); ?><?php comments_popup_link('Оставьте комментарий', '1 комментарий', '% коммент.'); ?>
Разумеется, вся эта информация выводится по Вашему желанию. Если Вы не хотите выводить имя автора, или дату публикации, или что-то еще, то можно просто опустить соответствующие строки кода. Или, можно включить больше информации, например, о тэгах для поста.
Далее выводится сам контент страницы.
<?php the_content('Читать дальше...'; ?>
Строка «Читать дальше…» используется в том случае, если Вы решили выводить на главной странице не весь контент целиком, а только отрывок, с тем, чтобы посетитель прочел весь пост на отдельной странице поста.
Теперь цикл для while можно закрыть.
<?php endwhile; ?>
Если в Вашем блоге задается публикация определенного количества постов на главной странице, то посетителям необходим способ перехода к более ранним постам, которые не вошли в первую страницу. Это обеспечит навигацию между страницами блога.
<?php posts_nav_link(); ?>
И, наконец, необходимо обработать ситуацию, когда постов для публикации не найдено.
<?php else : ?>
<h2>Не найдено</h2>
<p><?php _e("Sorry, no posts or pages could be found. Why not search for what you were trying to find?"); ?></p>
<?php get_search_form(); ?>
Здесь мы выводим сообщение о том, что информация не найдена, и предлагаем посетителю использовать поиск на сайте, для чего выводим поисковую форму.
Осталось только закрыть цикл для if, и сохранить полученный файл.
<?php endif; ?>
Файл single.php
Этот файл служит для вывода отдельных постов в WordPress, и он очень похож на файл index.php.
Создаем пустой файл single.php и копируем туда все содержимое созданного нами файла index.php. Теперь необходимо внести некоторые исправления.
Прежде всего, для заглавия поста теперь нет надобности в выводе ссылки на пост, так как это ссылка на эту же самую страницу. Поэтому заменяем соответствующий блок кода на
<div><?php the_title(); ?></div>
В операторе вывода контента нет необходимости в строке «Читать дальше…», поэтому ее мы убираем.
<?php the_content(''; ?>
Очевидно также, что и навигационные ссылки тут должны быть другие, а именно, тут могут быть ссылки на предыдущий и следующий посты. Поэтому блок кода для навигации будет выглядеть примерно так:
<?php previous_post_link('« % link', '%title'); ?> <?php next_post_link('%link »') ?>
После окончания вывода поста пришло время вывести комментарии к посту. Это достигается путем включения в код страницы следующего оператора:
<?php comments_template(); ?>
Наконец, здесь не может быть ситуации, когда отсутствует информация для публикации, а потому строки кода, ответственные за ее обработку, и вывод формы поиска на сайте можно убрать.
После всех этих изменений файл single.php можно сохранить.
Файл page.php
Данный файл служит для вывода страниц на блоге WordPress. Фактически он очень похож на файл single.php. Так что создаем пустой файл page.php и вставляем в него содержимое файла single.php.
Страницы считаются неупорядоченными, поэтому блок навигации здесь не нужен. Его мы убираем из кодов шаблона.
Что касается комментариев, то многие люди не включают возможность комментариев для страниц. Но убирать блок кода нет необходимости, поскольку управлять включением комментариев для страниц можно прямо из админ панели блога.
Файл page.php сохраняем.
В следующей статье мы завершим процесс построения темы WordPress для нашего сайта.
