Учебное пособие по темам WordPress для начинающих — Часть 10: Добавление дополнительных шаблонов
В этом уроке по теме WordPress для начинающих мы углубимся в шаблоны. Мы узнаем о частях шаблона и реализуем их для повторного использования. И мы добавим в нашу тему больше стандартных шаблонов WordPress.
Но прежде чем мы начнем добавлять больше файлов шаблонов, нам нужно знать, почему мы должны возиться с частями шаблона.
Части шаблона: более гибкие стандартные блоки
Части шаблона работают точно так же, как get_header()
и о get_footer()
которых мы узнали в части 2, но не ограничиваются этими файлами. Вы можете использовать части шаблона для любого файла!
Темы обычно используют часть шаблона для сообщений в цикле. Обычно многие шаблоны, такие как категория, архив и результаты поиска, обычно отображают каждое сообщение в цикле одинаково. Поэтому было бы очень хорошей идеей отделить вывод постцикла в один файл. Таким образом, вам не нужно повторять это в каждом шаблоне.
Давайте «преобразуем» часть нашего существующего кода в части шаблона, прежде чем мы начнем создавать больше шаблонов!
Создание части шаблона цикла сообщений
Создайте новый пустой файл в папке с нашей темой; называется content-loop.php
. Вы можете называть части шаблона как хотите. Но вы не можете назвать их так же, как любой из определенных шаблонов WordPress. В нашем index.php
найдите все, что у вас есть внутри цикла, вырежьте его и вставьте внутрь content-loop.php
.
Внутри теперь пустого цикла в index.php
, используйте вызов функции get_template_part()
и определите файл части шаблона в качестве параметра (без .php
расширения). Вот как это должно выглядеть в обоих файлах:
...
while (have_posts()): the_post();
get_template_part('content-loop');
endwhile;
the_posts_pagination();
...
Если вы обновите свою первую страницу, вы не увидите абсолютно никакой разницы.
Большой! Теперь, когда наш index.php
красивый и чистый, мы можем использовать его в качестве основы для дублирования в другие шаблоны. Ниже я расскажу, как добавить шаблон категории и шаблон результатов поиска, но я рекомендую вам создать больше шаблонов для большего контроля над дизайном вашей темы.
Добавление шаблона категории
Если вы вернетесь к иерархии шаблонов WordPress, вы увидите, что для категорий сообщений WordPress будет искать шаблон с именем category.php
. Сначала мы создадим его.
В папке вашей темы сделайте копию index.php
файла и переименуйте копию category.php
.
Вот и все. Вы в основном сделали …!
Однако мы добавим одну деталь; мы хотим показать заголовок, который говорит нам, что мы находимся на странице категории для сообщений в категории с именем X. В WordPress есть функция для этого, которую вы можете использовать во всех шаблонах архивов (категории, теги, архивы дат), the_archive_title
. Давайте добавим его перед циклом внутри <h1>
тега.
Если вы просматриваете страницу категории сообщений, вы должны увидеть что-то вроде этого с заголовком архива «Категория:». PS: Если вы хотите изменить вывод заголовка архива (например, не показывать «Категория:»), вы можете добавить фильтр в get_the_archive_title. На странице документации показан отличный пример того, как это сделать.
Что ж, это было легко! Далее займемся шаблоном результатов поиска.
Добавление шаблона результатов поиска
Процедура точно такая же, как и для шаблонов категорий. На этот раз сделайте копию category.php
и переименуйте копию в search.php
.
Все, что нам нужно исправить, это заголовок. Функция заголовка архива, которую мы использовали в шаблоне категории, к сожалению, не очень хорошо работает для шаблона результатов поиска. На самом деле в WordPress не существует простой функции, которая выводит для нас заголовок.
Но мы можем легко сделать его сами, и в то же время я покажу, как выводить динамическую переменную и при этом сохранять переводимость текста.
В PHP есть две полезные функции, printf()
и sprintf()
. Они делают то же самое, за исключением того, что printf
выводят его (как эхо) и sprintf
возвращают его, поэтому мы можем сохранить его в переменной. После того, как мы поместили текст в качестве первых параметров, мы можем добавить динамические переменные в качестве аргументов, которые затем вводятся в текст. Внутри них мы можем использовать переводимые текстовые функции __()
и файлы _e()
. Я рекомендую вам немного прочитать о том, как работает printf или sprintf, так как я не буду вдаваться в подробности.
WordPress предлагает простую функцию для получения искомой строки; get_search_query()
. С учетом сказанного давайте заменим функцию заголовка архива на это;
То, что делает приведенный выше код, происходит изнутри наружу; определение переводимого текста «Поиск: %s», который помещается внутри a, printf
который повторяет строку и заменяет строковую константу (%s
) вторым аргументом; что есть get_search_query()
.
В результате при поиске «er» мы получаем вот такой заголовок:
Хороший! Сделан еще один шаблон. Что касается последней части этого урока, мы перейдем к нашему единственному шаблону сообщения и добавим что-то очень распространенное в WordPress; шаблон комментариев.
Добавление шаблона комментариев к одному сообщению
В нашем single.php
, после публикации статьи, мы хотим показать комментарии. Комментарии должны выводить список предыдущих комментариев и форму для добавления нового комментария.
Шаблон комментариев — это файл шаблона, который вы можете добавить в свою тему, но на самом деле WordPress имеет собственный вывод шаблона комментариев по умолчанию. Если comments.php
в вашей теме его нет, запрос шаблона комментариев вернет для него вывод WordPress по умолчанию. Это то, что мы будем делать в этом уроке.
Мы хотим вызвать шаблон комментариев только в том случае, если в сообщении активированы комментарии (это настройка для каждого сообщения и глобальная настройка сайта). Поэтому мы добавляем проверку if, чтобы проверить, разрешены ли комментарии, comments_open()
и если она возвращает true, мы запрашиваем шаблон комментариев с расширением comments_template()
. Имейте в виду, что все это должно происходить внутри цикла. Я добавил его после конца </article>
прямо перед закрытием цикла.
Если вы посещаете один пост, к которому разрешены комментарии (я добавил комментарий только для того, чтобы показать вам список комментариев); вы получите этот красивый (гм) шаблон комментариев по умолчанию:
Теперь вы можете (и это часто рекомендуется) создать свою собственную comments.php
тему в своей теме, которая переопределит вывод WordPress по умолчанию. Однако в этом руководстве я не буду создавать шаблон комментариев, поскольку вывод WordPress по умолчанию работает нормально, если вы правильно его стилизуете. Если вы проверите HTML, то увидите множество доступных оболочек и классов.