Advertisement
  1. Code
  2. WordPress
Code

Добавление Фильтров-Зацепок в Фреймворк WordPress Темы

by
Difficulty:IntermediateLength:ShortLanguages:
This post is part of a series called How Theme Frameworks Actually Work.
Adding Functions to Your WordPress Theme Framework
Creating Child Themes for Your WordPress Theme Framework

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

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

Краткий Обзор Действий и Фильтров

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

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

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

Как Создавать и Использовать Фильтры

Вы можете получить доступ к фильтру с помощью функции add_filter() :

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

Что Вам Понадобится

Чтобы следовать зтому уроку, вам понадобится:

  • Установка WordPress для разработки
  • Редактор кода
  • Если вы работаете с кодом, использованным в моем фреймворке, вот код с предыдущего урока.

Добавление Фильтров

В этом уроке я добавлю три фильтра в фреймворке:

  • В "header", я возьму название и описание сайта в фильтр
  • В "footer", я добавлю фильтр функции "colophon", которую мы добавили в предыдущем уроке

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

Добавление Фильтра в Название и Описание Сайта

Начните с названия и описания сайта. Откройте файл header.php и найдите следующий код:

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

В каждом случае вы заменяете функцию bloginfo() на функцию get_bloginfo() и потом добавляете echo перед функцией apply_filters(). Начнем с названия сайта. Поменяйте код внутри элемента h1 на:

Как вы видите, я добавила функцию apply_filters() здесь дважды - один раз для атрибута названия ссылки, второй - для отображаемого текста. Новый код внизу:

Это создает фильтр под названием wptutsplus_sitetitle и затем применяет его к функции get_bloginfo( 'name' ). Затем это и отображается.

Теперь сделаем то же самое с описанием сайта. Это немного легче сделать, так как здесь нет ссылки. Отредактируйте элемент h2 следующим образом:

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

Добавление Фильтра к Colophon

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

Откройте ваш файл functions.php и найдите этот блок кода:

Теперь возьмите линию, где отображается название блога внутри ссылки и возьмите каждую из двух функций в функцию apply_filters() следующим образом:

Здесь я создала два фильтра:

  • echo apply_filters( 'wptp_colophon_link', home_url( '/' ) относится к ссылке, указывающей на название.
  • echo apply_filters('wptp_colophon_name', get_bloginfo( 'name' ) ) относится к самому названию.

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

Каждая из этих функций возвращает некоторое статическое содержимое на месте php функции в исходном фильтре, заменяя home url и название блога на мое название и на мой url блога:

Заключение

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

В некоторых случаях вы заметите, что фильтр становится слишком сложным, и тогда вам придется написать новую функцию или иногда даже создать новый файл-шаблон. Например, если бы я захотела сделать более существенные изменения в colophon, то я бы добавила новую функцию под названием wptp_colophon() в мою чайлд-тему - поскольку функция wptp_colophon() в фреймворке является заменимой, то моя новая функция ее и заменит. Но, если я захочу поменять весь footer, то мне придется создать новый файл footer.php.

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

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.