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

Руководство для начинающих по Действиям и Фильтрам в WordPress

by
Length:MediumLanguages:

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

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

Если обобщить, то хуки это то, что дает нам возможность настраивать, расширять и улучшать WordPress через API в темах, плагинах и других разработках.

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

В этой статье мы проследим жизненный цикл страницы WordPress, поймем как работают хуки, и просмотрим отличия между Действиями и Фильтрами. Благодаря этому сможем улучшиться не только как разработчики тем и/или плагинов, а также сможем глубже понять как работает WordPress.

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


Жизненный цикл страницы WordPress

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

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

Например, вы загружаете страницу. Затем, на более глубоком уровне WordPress сделает, что то наподобие следующего:

  • Посмотрит на ID запрошенной страницы
  • Запросит данные из базы для страницы по ID
  • Запросит данные из базы для любой связанной информации (например, категории, метки, изображения, и т.д.)
  • Запросит данные из базы для комментариев данной страницы
  • Вернет все данные в браузер

Файлы шаблонов и вызовы функций API отвечают за рендеринг, стилизацию и позиционирование данных на экране.

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

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

Популярный WordPress разработчик Rarst - парень из queryposts.com - собрал вместе относительно подробные схемы, которые показывают загрузку ядра WordPress:

WordPress Core Lifecycle

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

С учетом сказанного, вот ключ к пониманию хуков во время загрузки страницы WordPress:

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

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


Все о хуках

Хуки WordPress относятся к двум процессам - Действиям и Фильтрам. Если вы посмотрите на статьи Кодекса о хуках, вы не увидите ничего кроме небольшой страницы, ведущей по ссылкам на Действия и Фильтры. Именно так и должно быть, потому что это и есть хуки.

Вот как можно это описать:

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

Круто, не правда ли?

Но есть две вещи которые надо понять:

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

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


Действуем

Итак, что же такое Действия? Простейшее определение таково: Действия определяют, что что-то произошло. Вот и все. Но на сколько понятно такое определение? И как нам не спутать его с событиями?

Вот как я его понимаю:

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

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

Это означает, что существует возможность провести какие-либо манипуляции пока идет загрузка страницы.

В Кодексе есть отличный ресурс о Действиях, которые встроены в WordPress, а также порядок, в котором они стартуют. Сохраните себе, пользуйтесь почаще и выучите.

Очень важно научиться делать хуки в WordPress в определенных точках во время его работы и Doing It Right™ (делать это правильно).

Показательный пример: я часто вижу разработчиков которые используют init Действие слишком часто.  Конечно, бывают моменты когда его нужно использовать. Но допустим, вы хотели сделать что-то как раз перед получением записи. Тогда имеет смысл использовать хук pre_get_posts, а не init, не так ли?

Поэтому так важно понять принцип Действий.


Фильтруем всё

В свою очередь Фильтры абсолютно отличны от Действий. Так же как и Действия, они являются подобными точками, которые происходят во время жизненного цикла страницы WordPress; однако назначение у них другое.

Вот как я понимаю фильтры:

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

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

Другими словами, Фильтры предпримут действия над передаваемыми им данными. Например, вы хотели добавить короткое предложение об авторе в конец контента. Чтобы сделать это, вам необходимо зарегистрировать пользовательскую функцию с Фильтром the_content и добавить предложение в контент.

То как это сделать, выходит за рамки данной статьи, но мы постараемся охватить этот вопрос в следующей статье.

Так же как и в случае с Действиями, у Codex'a есть полный список доступных Фильтров. Аналогичным образом, в закладки, часто ссылаться и выучить.

Как только у вас появится твердое понимание Фильтров, вы сможете начать производить манипуляции с данными, их извлечение и сериализацию, делая это правильно (Doing It Right™), вместо того, чтобы обходить WordPress API. Это обеспечивает мощный, и в тоже время очень простой способ манипулирования данными.

Поэтому так важно понимать Фильтры.


Но когда мне...?

В данном случае всегда возникает неизбежный вопрос.

В каком случае мне надо использовать тот или иной хук?

И вот совет, который я обычно даю:

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

Ну вот и все! Достаточно просто, я надеюсь.


Выводы

Я настоятельно рекомендую для рассмотрения следующие ресурсы:

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

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.