Созданная вами тема будет использоваться в качестве родительской темы на сайтах, которые вы разрабатываете. Это означает, что в каждом случае вам нужно будет создать дочернюю тему, чтобы создать уникальный сайт с собственным дизайном и с дополнительными или другими функциями по сравнению с фреймворком.
Очевидный способ сделать это — погрузиться и начать создавать файлы шаблонов в своей дочерней теме, чтобы переопределить их в платформе, но благодаря хукам действий и фильтров, добавленным в вашу платформу, это не всегда может быть лучшим подходить.
В этой статье я расскажу о некоторых приемах, которые вы можете использовать в своих дочерних темах, чтобы наилучшим образом использовать вашу среду и импровизировать рабочий процесс.
Темы, которые я затрону, таковы:
- Создание начальных дочерних тем
- Внесение изменений в код через фильтр хуков фреймворка
- Добавление кода через хуки действий платформы
- Создание файлов шаблонов в вашей дочерней теме
- Когда вместо этого использовать плагин
Создание начальных дочерних тем
Основной целью разработки вашей тематической структуры является принятие принципа СУХОЙ (не повторяйте себя), который также применим к вашим дочерним темам.
Это может сделать вас более эффективным, если вы создадите одну или несколько «начальных» дочерних тем для использования с вашей инфраструктурой, которые содержат основной код, необходимый для начала работы над новыми проектами.
Принимая решение о том, как это сделать, подумайте, как вы работаете и какие сайты создаете:
- Вы создаете много сайтов для клиентов в одном секторе с аналогичными потребностями?
- Хотите предложить недорогие сайты на основе шаблонов для небольших клиентов?
- Существуют ли конкретные файлы шаблонов, которые вы склонны создавать для большинства своих новых проектов?
- Есть ли функциональность, которую нужно включить на некоторых сайтах, но не на других? (Например, я использую две начальные дочерние темы, одну с функцией комментариев, а другую без.)
- Есть ли стили, которые вы склонны использовать для большинства проектов, или вы можете использовать объектно-ориентированные стили или препроцессор CSS для большинства проектов?
- Есть ли библиотеки или ресурсы, которые вы используете для большинства новых проектов, или для значительной их части?
- Есть ли у вас две или три основные категории, в которые вы можете поместить проекты, причем каждая категория включает в себя аналогичные разработки?
Если вы ответили «да» на любой из этих вопросов, то разработка одной или нескольких начальных дочерних тем может сэкономить ваше время. Вы можете создать набор дочерних тем с базовым кодом, который вы повторяете для всех проектов, используя их, и тогда вам не нужно переписывать этот код (или создавать эти файлы) для каждого нового проекта.
Примечание для предостережения: если вы добавляете некоторый код в каждый новый проект, вы можете добавить его в свою инфраструктуру, а не в дочерние темы, возможно, с помощью ловушки, чтобы вы могли переопределить ее, если в будущем возникнет другая необходимость ,
Даже если вы ответили «нет» на поставленные выше вопросы, стоит создать очень простую начальную тему с пустым файлом таблиц стилей и функций и добавить инструкции, необходимые WordPress для доступа к родительской теме вашей платформы в таблице стилей:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
/*
Theme Name: My Theme Framework Child
Theme URI:
Description: Starter Child Theme
Author: Rachel McCollin
Author URI: https://rachelmccollin.co.uk
Template: wptutsplus-theme-framework-part6
Version: 1.0.0
Tags:
Text Domain: tutsplus
*/
@import url(«../wptutsplus-theme-framework-part6/style.css»);
|
Обязательными полями являются Theme Name
и Template
, остальные поля являются необязательными. Убедитесь, что для Template
вы используете каталог темы фреймворка, а не его имя. Полезно также заполнить другие поля, относящиеся к вашей теме.
Объявление @import
также важно, если вы хотите загрузить таблицу стилей фреймворка. Пока вы размещаете это над любым другим CSS, он будет загружать таблицу стилей родительской темы перед любыми стилями в таблице стилей дочерней темы, а это значит, что вы можете добавлять и переопределять стили в своей структуре в дочерней теме по мере необходимости.
Вы также можете создать начальный файл functions.php
с функциями, которые вы чаще всего используете в своих дочерних темах. Затем вы можете удалить любой из них и / или добавить к ним для конкретных проектов.
Внесение поправок в код через фильтры
Помимо добавления стилей в вашу дочернюю тему, вы, скорее всего, захотите внести изменения в код, выводимый платформой. Самый легкий способ сделать это — через фильтр-хуки, поэтому стоит сначала изучить их, чтобы определить, можете ли вы использовать какие-либо из них.
Создание функции, которую вы затем присоединяете к хуку фильтра, гораздо эффективнее, чем создание нового файла шаблона для нового кода; однако, если вы обнаружите, что делаете это неоднократно с одним и тем же хуком фильтра, вы можете рассмотреть возможность замены этого хука фильтра на хук действия и написание новой функции для каждого проекта, который вы активируете с помощью этого хука действия.
Чтобы быть более эффективным, вы можете захотеть создать набор соответствующих функций, которые вы поместите в файл функций различных начальных тем, или даже создать плагин с вашей функцией, который вы активируете при необходимости. Я расскажу о плагинах более подробно позже в этой серии.
Я рассмотрел процесс создания перехватчиков фильтров в предыдущей части этой серии, но, скажем, вы присоединяете функцию к фильтру с помощью функции add_filter()
. Так, например, чтобы изменить ссылку и имя, используемые в колофоне моего сайта, я создаю две функции следующим образом:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
function wptp_amend_colophon_name() {
$name = ‘Rachel McCollin’;
return $name;
}
add_filter( ‘wptp_colophon_name’, ‘wptp_amend_colophon_name’ );
function wptp_amend_colophon_link() {
$link = ‘http://rachelmccollin.co.uk’;
return $link;
}
add_filter( ‘wptp_colophon_link’, ‘wptp_amend_colophon_link’ );
|
Они подключаются к двум фильтрам в моей структуре темы: wptp_colophon_name
и wptp_colophon_link
и изменяют вывод каждого из них.
Добавление кода с помощью хуков действий
Ваш фреймворк также будет иметь хуки действий, которые вы можете использовать для вставки контента в различные места на ваших сайтах.
Если вы работали над файлами кода для платформы, прилагаемой к этой серии руководств, у вас будет семь хуков действий для работы:
- перед заголовком
- внутри заголовка
- перед содержанием
- после содержания
- в боковой панели
- в нижнем колонтитуле
- после нижнего колонтитула.
Например, допустим, вы хотите добавить кнопку призыва к действию на боковой панели. Вы можете создать новый файл sidebar.php
, но было бы эффективнее использовать вместо wptp_sidebar
хук wptp_sidebar
.
Для этого создайте файл functions.php
в своей дочерней теме и добавьте в него следующее:
1
2
3
4
5
6
7
8
9
|
function wptp_cta() {?>
<div class=»cta»>
<p>Email us on <a href=»mailto:[email protected]»>[email protected]</a></p>
</div>
<?php
}
add_action( ‘wptp_sidebar’, ‘wptp_cta’, 1 )
|
Функция wptp_cta()
создает разметку для призыва к действию, а функция add_action()
запускает ее через wptp_sidebar
с приоритетом 1
так что она появляется перед любым другим контентом, активированным через эту ловушку.
Существует множество другого контента, который можно добавить с помощью кнопок действий, таких как кнопки общего доступа над или под контентом, дополнительный контент в нижнем колонтитуле, поле поиска в заголовке и многое другое.
Возможно, вы просто захотите добавить некоторый контент на определенные типы страниц, такие как отдельные посты в блоге, и в этом случае наиболее очевидным началом будет создание нового шаблона single.php
. Но вы все равно можете использовать свои ловушки действий с добавлением условного тега:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
function wptp_after_single_posts() {
if( is_singular( ‘post’ ) ) { ?>
<h3>Enjoyed this?
<?php
// query to list latest blog posts here
}
}
add_action( ‘wptp_after_content’, ‘wptp_after_single_posts’ );
|
Это создаст новый запрос (с использованием WP_Query
), который WP_Query
список самых последних сообщений в блоге, чтобы поощрить посетителей читать что-то еще после того, как они закончили запись в блоге. is_singular( 'post' )
гарантирует, что он выводится только для отдельных сообщений, и, прикрепив его к wptp_after_content
вы отобразите его после основного содержимого публикации.
Создание новых файлов шаблонов
Иногда вы не сможете делать то, что хотите, используя фильтр или хуки действий в вашей структуре, и в этом случае вам нужно будет создавать новые файлы шаблонов в ваших дочерних темах.
Это могут быть те же файлы шаблонов, которые хранятся в вашей платформе, и в этом случае файлы в дочерней теме переопределяют их. Или это могут быть новые файлы шаблонов, например, для новой категории, таксономии или типа записей.
Если вы создаете файлы шаблонов в своих дочерних темах, вам будет проще, если вы будете использовать файлы шаблонов в своей структуре в качестве отправной точки. Шаги, которые я выполняю:
- Определите файл шаблона, который необходимо создать, со ссылкой на иерархию шаблонов WordPress.
- Создайте пустой файл с соответствующим именем в вашей дочерней теме
- Определите файл в вашей структуре, который ближе всего к новому файлу (снова со ссылкой на иерархию шаблонов)
- Скопируйте содержимое этого в ваш новый файл
- Внесите изменения в новый файл по мере необходимости.
Это избавляет вас от дублирования любого кода, который будет распространен между вашим новым файлом и существующими файлами в вашей среде, например, при вызове включаемых файлов.
Когда использовать плагин вместо
Другой вариант, который у вас есть при создании сайтов на основе вашей платформы, — это использование плагинов в сочетании с вашими дочерними темами. Плагин не полностью заменит дочернюю тему, но может быть полезен в следующих случаях:
- Функциональность, которую вы хотите добавить, не зависит от темы (т.е. вы хотите сохранить ее, если сайт когда-либо изменит тему в будущем). Это может включать, например, регистрацию пользовательских типов записей или таксономий.
- Вы хотите использовать эту функциональность на нескольких сайтах, которые вы создаете, но недостаточно для того, чтобы перейти в начальную дочернюю тему или сам фреймворк.
Я расскажу о разработке плагинов для вашего фреймворка в следующей части этой серии.
Резюме
Каркас вашей темы — это только отправная точка библиотеки кода и файлов, которые вы создадите для поддержки сайтов, которые вы разрабатываете. Каждый созданный вами сайт должен работать на дочерней теме, которая будет иметь вашу базовую тему в качестве родительской.
Как мы уже видели, ваши дочерние темы добавят свои собственные стили и функциональность, и они могут сделать это, подключившись к действиям и фильтрам в вашей инфраструктуре, или создав новые файлы шаблонов. Это всегда хорошая идея, чтобы принять решение, которое требует наименьшего количества кода, поскольку это делает ваш сайт быстрее и вашу жизнь проще!