Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

Создание Дочерней Темы для Фреймворка Вашей WordPress Темы

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called How Theme Frameworks Actually Work.
Adding Filter Hooks to Your WordPress Theme Framework
Developing Plugins for Your WordPress Theme Framework

Russian (Pусский) translation by Narine Hovhannisyan (you can also view the original English article)

Созданный вами фреймворк темы будет использован в качестве родительской темы в разработанных вами сайтах. Это означает, что в каждом случае вам нужно будет создавать дочернюю тему для создания уникального сайта с его собственным дизайном и дополнительными или другими функциями по сравнению с фреймворком.

Создание файлов-шаблонов в вашей дочерней теме для изменения фреймворка очевидно, но благодаря действиям и фильтрам, которые вы добавили в ваш фреймворк, это не самый лучший подход.

В этом уроке я опишу некоторые методы, которые вы можете использовать в вашей дочерней теме, чтобы наилучшим способом использовать фреймворк и улучшить процесс вашей работы.

Эти методы следующие:

  • Создание начальной дочерней темы
  • Изменение кода с помощью фильтров фреймворка
  • Добавление кода с помощью действий фреймворка
  • Создание файлов-шаблонов в вашей дочерней теме
  • Необходимость использования плагина

Создание Начальной Дочерней Темы

Основной целью разработки фреймворка вашей темы является применение принципа DRY (Не Повторяй Себя), который также применяется к дочерней теме.

Будет более эффективнее, если вы создадите одну или несколько начальных дочерних тем для использования вместе с фреймворком, который содержит в себе исходный код для начала работы с новыми проектами.

При принятии решения рассмотрите метод вашей работы и сайты, которые вы создаете:

  • Вы создаете много сайтов для клиентов в одном и том же секторе с аналогичными потребностями?
  • Вы хотите предложить сайты с низкой стоимостью, основанные на шаблонах, для более мелких клиентов?
  • Есть ли конкретные файлы-шаблоны, которые вы намереваетесь создать для большинства ваших новых проектов?
  • Есть ли функции, которые вам надо включить в одни сайты и не включить в другие? (Например, я использую две начальние дочерние темы, одну с функцией комментариев и одну без.)
  • Есть ли стиль, который вы намереваетесь использовать для большинства ваших проектов, или можете ли вы использовать объектно-ориентированный стиль или CSS-препроцессор для большинства проектов?
  • Есть ли библиотеки или ресурсы, которые вы используете для большинства новых проектов или для их значительной части?
  • У вас две или три категории, под которыми вы можете расположить проекты, где каждая категория включает аналогичную работу?

Если вы ответили да на какой-либо из этих вопросов, тогда разработка одной или более начальних дочерних тем поможет вам сэкономить время. Вы можете создать набор дочерних тем с основным кодом, который вы можете использовать во всех проектах, и вам больше не понадобится его переписывать (или создавать эти файлы) для каждого нового проекта.

Обратите внимание: Если вы добавляете код каждому новому отдельному проекту, тогда с помощью зацепки, которую вы можете впоследствии легко изменить, вы можете добавить его в ваш фреймворк, а не в дочернюю тему.

Даже если вы ответили нет на выше перечисленные вопросы, то все равно стоит создать начальную тему с пустыми таблицей стиля и файлом функций, и добавить инструкции, которые нужны WordPress для доступа к вашей родительской теме фреймворка в таблице стилей:

Обязательными полями выше являются Theme Name и Template, остальные - не обязательны. Убедитесь, что для Template вы используете директорию фреймворка темы, а не ее название. Это также поможет для заполнения других полей, имеющих отношение к вашей теме.

Декларация @import также является важной частью, если вы хотите загрузить таблицу стилей фреймворка. До тех пор, пока вы поместите ее сверху любого другого CSS, будет загружаться таблица стилей родительской темы до таблицы стилей дочерней темы, означая, что вы можете добавлять и коррекотировать стиль в вашем фреймворке по мере надобности.

Вы также можете создать начальный файл functions.php с функциями, которые вы чаще всего используете в вашей дочерней теме. Затем вы можете удалить любую из них и/или добавить их в определенный проект.

Внесение Изменений в Код с Помощью Фильтров

Так же как вы добавили стиль вашей дочерней теме, вы, скорей всего, захотите внести изменения в код, выведенный фреймворком. Наиболее легким способом для этого являются фильтры, так что для начала нужно выяснить, можете ли вы использовать какой-либо из них.

Создание функции и дальнейшее ее прикрепление к фильтру являеется более эффективным, чем создание нового файла-шаблона для нового кода; однако, если вы поймаете себя на неоднократном использовании одного и того же фильтра, вам следует рассмотреть вопрос об изменении фильтра на действие и написании новой функции для каждого отдельного проекта, который вы сможете активировать с помощью этого действия. 

Чтобы быть более эффективным, вы, возможно, захотите создать набор соответствующих функций, который вы разместите в файле функций различных стартовых тем или даже создадите плагин с вашей функцией, который вы активируете в случае необходимости. Я расскажу о плагинах более подробно далее в этом уроке.

Я рассказала о процессе создания фильтров в более ранней части этой серии, но чтобы резюмировать, вы прикрепляете функцию к фильтру, используя функцию add_filter(). Например, чтобы внести изменения в ссылку и название, используемые в colophon, я создаю две функции:

Они цепляются в два фильтра фреймворка моей темы: wptp_colophon_name и wptp_colophon_link, и изменяют выведенный код каждого из них.

Добавление Кода с Помощью Действий

Фреймворк вашей темы будет также содержать в себе действия, которые вы можете использовать для добавления контента в различные места вашего сайта.

Если вы работаете с файлами кода для фреймворка в комплекте с этими обучающими уроками, то у вас есть семь действий-зацепок для работы:

  • до header
  • внутри header
  • до контента
  • после контента
  • в боковой панели
  • в footer
  • после footer.

Например, вы хотите добавить запрос кнопке действий боковой панели. Вы можете создать новый файл sidebar.php, но будет более эффективней вместо этого просто использовать зацепку wptp_sidebar.

Для этого создайте файл functions.php в вашей дочерней теме и добавьте к нему следующее:

Функция wptp_cta() создает разметку для запроса действия и функция add_action() начинает ее работу с помощью зацепки wptp_sidebar с приоритетом 1, так чтобы она появилась до любого содержимого, активированного с помощью этого действия.

Существует много другого содержимого, которое вы бы могли добавить с помощью действий-зацепок, например, кнопки "Поделиться" до или после контента, дополнительный контент в footer, поисковое поле в header и многое другое.

Вы наверняка захотите добавить контент на определенные типы страниц, такие как одиночная страница блога, в этом случае вы должны будете начать с создания нового шаблона single.php. Но вы все еще можете использовать ваши действия-зацепки с добавлением условного тега:

Это создаст новый запрос (используя WP_Query), который вынесет список самых последних сообщений в блоге, чтобы поощрить посетителей прочитать что-то еще после того, как они закончили запись в блоге. Условный тег is_singular( 'post' ) удостоверяется в том, что это одиночный пост, и после прикрепления его к зацепке wptp_after_content вы покажете его после основного контента поста.

Создание Новых Файлов-Шаблонов

Иногда использование фильтров или действий в вашем фреймворке не будет достаточно для достижения желаемого результата, и тогда вам нужно будет создать новые файлы-шаблоны в вашей дочерней теме.

Это могут быть одни и те же файлы-шаблоны, которые хранятся в вашем фреймворке, и в этом случае файлы дочерней темы скорректируют их. Или это могут быть новые файлы, например для новой категории, таксономии или типов постов.

Если вы создаете файлы-шаблоны в вашей дочерней теме, то будет легче, если вы будете использовать файлы-шаблоны вашего фреймворка как начальную точку. Последующие шаги:

  1. Определите необходимый для создания файл-шаблон со ссылкой к иерархии шаблонов WordPress
  2. Создайте пустой файл с соответствующим названием в вашей дочерней теме
  3. Определите файл в фреймворке, который ближе к новому файлу (снова со ссылкой на иерархию шаблонов)
  4. Скопируйте его содержимое в ваш новый файл.
  5. Внесение изменений в новый файл, как это требуется.

Это сэкономит вам работу по дублированию кода, который будет общим для нового файла и уже существующих файлов вашего фреймворка, например, запрос для включения файлов.

Когда Нужно Использовать Плагин

При создании сайтов, основанных на вашем фрейморке, вы также можете воспользоваться плагинами в сочетании с вашими дочерними темами. Плагин полностью не заменит вашу дочернюю тему, но он может быть полезен в следующих ситуациях:

  • Функциональность, которую вы хотите добавить, не зависит от темы (например, вы хотите сохранить ее, если сайт поменяет тему в будущем). Это включает в себя регистрацию типов постов или таксономию для примера.
  • Вы хотите использовать эту функциональность на ряде сайтов, которые вы создали, но этого не достаточно, чтобы перейти в начальную дочернюю тему или в сам фреймворк.

Я расскажу о разработке плагинов для вашего фреймворка в следующем уроке.

Заключение

Фреймворк вашей темы - всего лишь начальная точка в библиотеке кодов и файлов, созданный для поддержания разработанных вами сайтов. Каждый созданный сайт будет запускаться на дочерней теме, чьим родителем будет фреймворк вашей темы.

Как мы видим, ваши дочерние темы добавят свой собственный стиль и функциональность, они могут сделать это за счет подключения действий и фильтров в ваш фреймворк или с помощью создания файлов-шаблонов. Всегда лучше воспользоваться решением, требующим меньше кода, так вы сделаете ваш сайт быстрым и упростите себе жизнь!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.