Что такое хуки wordpress
Что такое хук в WordPress? Полезные советы по работе с хуками в WordPress
Если вы плохо знакомы с хуками, эта статья поможет вам. Приведенные в статье примеры взяты из ядра WordPress, а также из собственного многолетнего опыта работы разработчиком плагинов.
Хуки WordPress — это функция, которая позволяет расширять возможности плагины и темы без риска их сломать.
Что такое хук?
Хук «do» называется «действием». В любом месте, где определено действие, можно выполнить собственный код. Вот некоторые примеры:
Хук «customize» называется «фильтром». Фильтр позволяет изменять или настраивать значение и возвращать его в новой форме. Вот некоторые примеры:
Для фильтра важна не только позиция, но и возвращаемые значения. WordPress имеет фильтр почти для каждого значения, которое обрабатывает.
Элементы процедуры хука
Хук (существительное)
Сам хук — это указание того, когда и где происходит магия. Представьте себе, что это крюк, который альпинист вбил в поверхность скалы. Крюк имеет определенную позицию. Если другие альпинисты захотят двигаться в этом направлении, они могут использовать его.
Хуки действий вызываются с помощью функции do_action:
Хуки вызываются с помощью apply_filters() :
Как видите, нам нужно перехватить данные из фильтра.
Действия и фильтры
и использование тега
для разрывов строк.
В отличие от действия, функции фильтра требуется хотя бы один аргумент. Он должен быть возвращен.
Хук (глагол)
В процедуре хука WordPress нужно указать, для чего именно предназначен хук. Это означает, что мы должны привязать функцию (глагол) к крюку (существительному). Это делается с помощью функции, которая часто неправильно называется «хуком».
Для хука wp_head и действия noindex() связь устанавливается с помощью этой строки кода:
Третий параметр является приоритетом. Мы рассмотрим его ниже.
Включение wpautop() в the_contentо осуществляется с помощью этой строки:
Это основные принципы процедуры хука. В следующих разделах мы рассмотрим их более подробно.
Вы уже используете эти хуки
WP_HEAD
The content
По умолчанию к функции the_content уже подключено несколько фильтров.
Эти фильтры отвечают за формат и ряд специальных символов в тексте. Они также широко используется плагинами для присоединения таких элементов, как иконки социальных сетей или связанных записей.
Уроки использования the_content
Параметры в процедуре хука
Основные параметры, которые нужны — это имя хука, имя функции, приоритет и аргументы, которые ей передаются.
Вот как выглядит вызов add_filter :
Имена хуков ($teg)
Префиксы имен хуков
Помимо позиции и значения нужно задать префикс хука префикса. Например:
Это предотвращает конфликты с хуками в других плагинах или темах оформления.
Динамические имена хуков
Данная функция включает в себя следующие хуки:
Магический «all»
При вызове add_action() и add_filter() в качестве имени хука можно использовать специальный тег. Благодаря чему связанная функция будет использоваться для каждого хука.
Имена функций
Также возможно подключение статичной функции в классе:
Ее вызов в экземпляре этого класса будет выглядеть следующим образом:
Также можно вызвать метод в экземпляре того же класса, например:
Использование PHP функций по умолчанию
В определенных случаях не нужно создавать собственную функцию. Эта процедура хука преобразует в заглавную каждую первую букву заголовка записи:
Поскольку ucwords() является стандартной функцией PHP, которая принимает и возвращает значение, ее можно сократить до одной строки:
Приоритеты
Третий параметр в add_action() и add_filter() — это приоритет. Он устанавливает порядок, в котором вызываются функции, связанные с хуком.
Этот параметр является необязательным и по умолчанию равен 10, если не определен явно. Несколько функций с одинаковым приоритетом будут вызываться в том порядке, в котором они были зарегистрированы в хуке.
Плагин Advanced Ads использует the_content при вставке рекламных объявлений до или после контента. Ее третий параметр определяет, вставляется ли сначала рекламное объявление или другой контент. Чтобы избежать обращений за поддержкой относительно «неправильного» порядка элементов, я предоставил пользователям возможность выбирать приоритет фильтра в качестве опции.
Проверка выполнения действия
Проверка использования фильтра
С помощью этого фрагмента кода я проверяю, является ли приоритет wpautop() выше, чем приоритет функции включения рекламных объявлений. Получается, что параграфы еще не установлены, и это указывает плагину сначала создавать их.
Аргументы
При использовании функции add_action() или add_filter() четвертый параметр — это количество аргументов, которое ожидает функция действия или фильтра.
В нашем случае функция- хук может использовать эти четыре аргумента. Но это не обязательно. Что подтверждается взаимосвязью, реализованной в ядре:
Сложности с количеством аргументов
Указанное число аргументов должно соответствовать количеству, которое использует функция. Но это правило необязательное, если аргументов нет или он только один.
Если функции требуется больше аргументов, вам придется их установить, иначе вы получите сообщение об ошибке. Если вы их установили, также необходимо будет установить приоритет, который во многих случаях является необязательным.
Удаление действий и фильтров
Удаление из хука действия или фильтра не является чем-то необычным. Популярным примером было удаление emojis из WordPress 4.2.
Весь плагин Disable Emojis можно свести к приведенному ниже коду:
Функции remove_action() и remove_filter() принимают три аргумента:
Как найти хук?
Чтобы найти хук, нужно просто знать, что бы вы ни хотели изменить или добавить. Чтобы приступить к работе, можно просто изучить функции, которые уже используются в текущем коде.
Еще одним ресурсом, который можно использовать, является страница API плагинов. На ней перечислены важные функции и другая полезная информация.
Отладка хуков
Чтобы отлаживать хуки, создайте список всех подключенных действий и фильтров.
Использование error_log()
Использование HOOK API
Использование плагинов
Кроме этого существуют плагины для отладки, которыедают возможность увидеть список всех хуков и подключенных функций. Лично я использую Debug Objects.
Приступаем к работе
Надеюсь, что теперь выбудете лучше понимать решения, которые приводятся на разных форумах.
Дайте знать, что вы думаете по этой теме в комментариях. За комментарии, подписки, дизлайки, отклики, лайки низкий вам поклон!
Дайте знать, что вы думаете по данной теме в комментариях. Мы крайне благодарны вам за ваши комментарии, отклики, подписки, дизлайки, лайки!
Что такое WordPress хуки и как их использовать?
Каждый WordPress разработчик должен знать что хуки являются основным механизмом связи между ядром WordPress, плагинами и темами.
Если вы еще не согласны с этим утверждение, тогда вам просто критически важно начать именно с этой темы и очень хорошо в ней разобраться, чтобы понять как работает WordPress и его экосистема.
Я учавствовал в несколько десятках технических интервью и был сильно удивлен, что некоторые разработчики WordPress понимают эту, на мой взгляд важнейшую, тему поверхностно, интуитивно или вообще не знают, как работают хуки. Лично я считаю, что данная тема является обязательной и самой важной для разработчиков WordPress, поэтому я решил описать ее еще раз. В любом случае, давайте начнем.
Хуки — это Действия (Actions) и Фильтры (Filters)
Действия (Actions) разрешают вам добавить данные или изменить поведение WordPress. Действия будут запускаться в определенный момент внутри WordPress ядра, плагинов или тем. Колбэки (Callback functions) для действий могут выполнять разные задачи, такие как пользовательский вывод или добавление чего-нибудь в базу данных. Колбэки для действий ничего не возращают назад при добавлении на хук.
Документация для WordPress разработчиков
Фильтры (Filters) дают возможность изменить данные в процессе выполнение WordPress ядра, плагинов или тем. Колбэки (Callback functions) для фильтров могут принимать переменные, изменять и возращать их. Все они работают в отдельности друг от друга и не должны создавать никаких побочных действий, такие как изменение глобальных переменных или вывод. Фильтры обязательно должны вернуть что-нибудь назад.
Документация для WordPress разработчиков
В двух словах, действия запускают какой-нибудь код, а фильтры — изменяют переменные. Давайте рассмотрим пару примеров:
Как технически работают хуки?
Пользователь отправляет какой-то HTTP запрос и интерпретатор PHP запускает нужные WordPress файлы, начиная с ядра, одним из файлов ядра является хранилище для хуков — WP_Hook класс. Затем PHP интерпретатор выполняет код строка за строкой и когда находит функции для добавления колбэков на хуки записывает их в хранилище. Очень важно, что колбэки не запускаются, а записываются в хранилище. Затем, интерпретатор находит функцию для запуска хука, смотрит в хранилище и запускает добавленные колбэк фукнции одна за одной по очереди.
Такой крутой механизм дает нам сумашедшую расширяемость для разработки. Вы разработчик плагина или темы? Вы можете легко изменить поведение ядра, любой другого плагина, или темы без особых проблем (если вы знаете как использовать хуки :)).
Вот, упрощенный пример:
Таким образом 1-й и 2-й плагины и тема могу взаимодействовать и влиять на код, который находится на какой-то странице или скрыт где-то на бэкенде. Правда круто?
Список фукнций, относящихся к хукам
Фукнции запускающие колбэки, которые были добавлены на хук (найболее используемые):
Фукнции запускающие колбэки, которые были добавлены на хук с несколькими аргументами, которые переданные по ссылкеp:
Устаревший фукнции для запуска колбэков. Все еще работают, но выдают warning:
Добавить колбэк на хук (найболее используемые):
Удалить колбэк с хука:
Удалить все колбэки с хука:
Получить кол-во раз, которые этот хук был вызван за текущий запрос:
Проверить, добавлен ли колбэк на текущий хук:
Получить имя текущего хука:
Обрабатывается ли в данный момент хук:
Что же такое колбэк?
Я думаю в ходе статьи вы уже устали от слова колбэк. Давайте разберемся, что это такое и почему это так важно для хуков? Итак, Callbale — это псевдотип в PHP. Так как нам нужно запускать наш код не сразу, а в какой-то определенный момент, мы должны дать всю нужную информцию о том, что конкретно нам нужно выполнить. Строку add_action( ‘save_post’, ‘notify_administrator’ ); мы должны читать как «на действие сохранения поста вызвать функцию оповещения администратора». Еще раз повторю, потому что это очень важно, мы ничего не вызываем, мы отвечаем на вопросы «Когда?» и «Что нужно запустить?».
В двух словах тип callable — это то, что мы можем запустить. И что же мы можем запустить в PHP? Мы можем запустить функции или публичные методы объекта или класса, но как из этого сделать callback? Просто передать названия метода или функции. Очень сильно рекомендую вам выучить и разобраться в синтаксисе, потому что разработчики WordPress работает с колбэками каждый день:
Посмотрели код? Теперь вернитесь и посмотрите еще раз. Советую выучить синтаксис и уметь понимать его автоматически при чтении кода, потому что колбэки — это основной механизм хуков и еще многих других вещей в WordPress.
Настройка PhpStorm для хуков
Настройка PHP интерпретатора и добавление путей проекта
Настройка WordPress как фреймворка
Результат настройки PhpStorm
В результате вы получите две очень великолепные функции: автодополнение хуков, которое поможет вам найти хук, если вы приблизительно знаете его имя.
Автодополнение WordPress хуков в PhpStorm.
И быстрый поиск вызова хуков. Вы можете кликнуть на значок h↑ и найти все места, где данный хук используется. В резульате, вы можете легко перейти в место, где данный хук используется и найти больше инфорации о его использовании или найти близьлежащие хуки, а так же документацию для хуков.
Быстрый поиск WordPress хуков в PhpStorm
Как раставить хуки?
Если вы пишите тему или плагин для массового использования, то вы обязательно должны оставить как можно больше хуков. Как это сделать правильно? На самом деле тема довольно сложна, потому что каждый случай уникальный, но я все же попробую:
Давайте рассмотрим на примере просто запроса в API:
И еще один пример, шорткод, который печатает какую-то таблицу:
Соглашение об именовании хуков
В WordPress документации нет особых рекомендации насчет именовании хуков, но в сложных продуктах для WordPress без этого никуда. Я предпочитаю, чтобы все соглашения были описаны в линтере как часть стандартов кодирования. На самом деле не важно, какое именно соглашение будет у вашей команды, но оно должно быть.
Для примера вы можете использовать Полное название класса (FQCN) + название метода + дополнительная инфорация(опционально). Давайте обновим наш код для запроса в API с помощью этого соглашения:
В таком случае мы всегда знаем, как назвать хук и уверены в том, что не будет никаких проблем с другой частью вашего приложения. Иногда конечно названия хуков будут иметь не совсем корректный порядок слов или не очевидные именна, но в таком случае мы должны упростить наш код, разбить на более мелкие методы. Самое важное, что в таком случае мы имеет четкое соглашение для именования хуков и можем это задокументировать и автоматизировать.
Причиной такого соглашения является упрощение работы для инстументов анализа кода, поиска в PhpStorm, инструментах генерации документации и т.д.
Хуки в WordPress (фильтры и события)
В этой я постарался собрать всю базовую информацию о хуках WordPress и объяснить её на пальцах. Принцип работы хуков не сложный, но далеко не все хорошо его понимают и это большое упущение, потому что хуки это очень мощный инструмент для изменения поведения ядра WP, создания плагинов и тем.
Есть два типа хуков:
Фильтр (filter) Изменяет значение переменной — получает значение и возвращает его (изменённое или нет). Событие (action) Запускает произвольный код — колбэк функция прикрепленный к хуку сработает в момент срабатывания хука в коде.
К хукам (фильтрам, событиям) прикрепляются PHP функции (callbacks), затем эти функции сработают, в момент срабатывания хука. Такое поведение в программировании называется перехват.
В функцию прикрепленную к хуку могут передаваться параметры (дополнительные данные). На основе этих данных в функции можно создавать какую-либо логику. Читайте ниже.
Простой пример хука-события (action):
Пример с передачей параметра:
В программной части фильтры и события — это одно и тоже, т.е. в коде работает и то и другое одинаково, можно например заменять функцию add_filter() на add_action() — все будет работать! Разделение нужно, потому что это разные вещи по смыслу.
Список всех хуков WP смотрите на странице «Все хуки WordPress».
Всего в WordPress их около 2000. Некоторые важные хуки я описал и продолжаю описывать, они находятся тут.
Как работают Фильтры в WordPress
Для работы фильтра используются две функции:
add_filter( hook_name, function, priority, args_num ) — добавляет/прикрепляет функцию к фильтру, которая будет вызвана в момент срабатывания фильтра. Такая функция называется «коллбэк-функция».
Пример
Еще пример
Как работают События в WordPress
Для работы события используются две функции:
Пример
Допустим, мы делаем тему и в каком-то месте темы нам нужно вызвать функцию, но мы заранее не знаем как функция будет называться. Т.е. пользователи сами будут добавлять функцию в это место.
Для этого в этом месте шаблона мы может вызвать не функцию а событие, назовем его my_action и затем прикрепить к этому событию функцию:
Приоритет хука
Приоритет важен когда к хуку прикрепляется несколько callback-функций. Приоритет определяет порядок, когда callback-функция будет выполняться по отношению к другим callback-функциям.
Приоритет указывается в третьем параметре для функции которая прикрепляет функцию к хуку:
Если две функции прикреплены к одном хуку с одинаковым приоритетом, то они будут выполняться в порядке их прикрепления.
Рассмотрим как работают приоритеты на примере:
В момент срабатывания хука init функции выполняться в следующем порядке:
Как видно, чем больше число приоритета, тем позднее выполниться хук.
Для фильтров приоритеты работают точно также.
Параметры хука
Например, когда WordPress сохраняет запись, запускается событие save_post. Этот хук может передать два параметра: ID записи и объект записи :
Однако можно указать что мы хотим получить 2 параметра. Для этого укажем четвертый параметр add_action() :
Ограничение в один параметр по умолчанию сделано для быстродействия системы хуков.
Для фильтров все работает аналогично
При создании фильтра в него можно передать сколько угодно параметров через запятую:
Теперь, при добавлении коллбэка. Мы можем использовать эти параметры. Для этого нужно указать количество передаваемых параметров:
Функция фильтра будет выглядеть так:
Удаление хука
Чтобы удалить сам хук, нужно изменить код и удалить вызов хука, обычно это сделать невозможно, потому что хуки находятся в ядре или в плагине. Здесь мы поговорим о том как можно удалить прикрепленный к хуку коллбэк-функцию.
Для удаления функции привязанной к фильтру или событию, используется одна из функций:
Для удаления хука нужно знать:
Если нужно удалить хук с приоритетом отличным от 10 и вы его не указали, то хук НЕ будет удален!
Пример удаления хука
В теме нам нужно удалить это событие, чтобы текст в подвале не выводился. Для этого в файле темы functions.php можно прописать такой код:
Важный момент: удалять хук нужно после того как он добавлен, но еще не отработал.
Еще пример удаления хука
Демонстрация добавления и удаления хука в одном коде:
Удаление с приоритетом (приоритет должен совпадать):
Удаление статического метода класса:
Удаление хука добавленного анонимной функцией
Удалить хук с замыканием не так просто, например такой код не сработает:
Надежно удалить хук с использованием замыкания, можно только если замыкание создавалось в переменную и у нас есть доступ к этой переменной:
Ненадежный, но все же способ удалить хук с замыканием, когда у нас нет доступа к замыканию:
Пример её использования:
Создание своего хука
При написании плагина, в него можно и нужно добавлять хуки, чтобы дать возможность пользователям внедряться в код плагина, не меняя код самого плагина. Так, прикрепляя коллбэки к вашему хуку пользователи вашего плагина смогут изменять его код из кода другого плагина или темы.
Чтобы создать событие или фильтр в коде, к которому потом можно будет добавлять функции, используется функция
Синтаксис у этих функций такой:
Пример создания хука-события
Допустим, у нас есть плагин опроса и при голосовании хорошо бы добавить событие этого голосования. Чтобы можно было из другого кода подключиться к нашему плагину и, допустим, при голосовании, записать какие-то данные пользователя к себе в базу данных. Такой функционал может не предусматриваться плагином, но он может пригодится пользователям вашего плагина и при наличии хука, они легко его допишут.
Теперь, разработчик темы или другого плагина может использовать этот хук и выполнить в момент события нужные ему действия.
Функции хуков
Вспомогательные WordPress функции для фильтров
В WordPress есть специальные функции, которые упрощают работу с фильтрами.
Чтобы было понятнее как это работает, давайте посмотрим на вызов фильтра load_default_widgets :
При вызове функции wp_maybe_load_widgets() срабатывает фильтр. По умолчанию он всегда возвращает true и условие не выполняется — виджет подключаются. А в примерах выше мы возвращаем false и условие выполняется — виджеты не подключаются.
Это демонстративный пример из кода WordPress, чтобы объяснить принцип работы. В практике его лучше не использовать, для отключения виджетов используйте код из описания функции unregister_widget().
Аналогичный пример
Еще один пример
Закроем возможность сброса пароля, с помощью фильтра allow_password_reset :
Теперь все пользователи не смогут сбрасывать пароли на сайте.
Список всех хуков WordPress
Получить список всех хуков может понадобится. В процессе разработки или при поиске ошибок.
Следующий код выведет список всех хуков (фильтров и событий), которые зарегистрированы на момент вызова этого кода:
Как получить функции прикрепленные к указанному хуку?
Часто бывает нужно посмотреть, какие функции прикреплены к отдельному фильтру или событию.
Теперь, чтобы вывести список всех функций/методов прикрепленных к фильтру или событию нужно вызвать эту функцию, и указать ей название хука.
Быстрые и дешевые лайки на любые посты в Instagram можно приобрести на сайте Doctor SMM с гарантией на выполнение заказа. Только здесь Вы найдете ресурс на свой вкус! На сайте представлен широкий выбор формата лайков: русские, англоязычные, автолайки, тв-лайки, микс и пр. Делайте заказ сейчас и получайте выгодные оптовые скидки!
Тимур, Вы, конечно, молодец! Спасибо за трудолюбие, но.
Всегда немного трудно читать материалы, которые готовит «кулибин», который (при неглупом уме) сам до всего докопался, но системного образования и понимания не получил.
Если такому человеку немного почитать и поразбираться на глубоком уровне, то цены ему, обычно, не бывает! Он становится в уровень с мировым развитием в данной области и, благодаря природному уму, способен сделать чего-то больше.
В программировании уже более 50 лет такая техника и технология называется «перехват». Об этом написаны куча учебников и руководств.
Беда в том, что когда Вы создаёте параллельную понятийную вселенную со своими терминами и представлением о жизни, то она не согласуется с остальными материалами и знаниями, накопленными человечеством, а значит живёт своей жизнью. Либо Вы создадите глобальное знание, которое перебьёт остальные источники и станет доминирующей в мире, либо вашу вселенную ожидает упадок.
Именно поэтому обычно сначала изучают текущее развитие вопроса в мире, а потом уже пишут своё на данную тему, но совместимое и/или расширяющее представление о предмете.
Что такое WordPress хуки и как их использовать?
Каждый WordPress разработчик должен знать что хуки являются основным механизмом связи между ядром WordPress, плагинами и темами.
Если вы еще не согласны с этим утверждение, тогда вам просто критически важно начать именно с этой темы и очень хорошо в ней разобраться, чтобы понять как работает WordPress и его экосистема.
Я учавствовал в несколько десятках технических интервью и был сильно удивлен, что некоторые разработчики WordPress понимают эту, на мой взгляд важнейшую, тему поверхностно, интуитивно или вообще не знают, как работают хуки. Лично я считаю, что данная тема является обязательной и самой важной для разработчиков WordPress, поэтому я решил описать ее еще раз. В любом случае, давайте начнем.
Хуки — это Действия (Actions) и Фильтры (Filters)
Действия (Actions) разрешают вам добавить данные или изменить поведение WordPress. Действия будут запускаться в определенный момент внутри WordPress ядра, плагинов или тем. Колбэки (Callback functions) для действий могут выполнять разные задачи, такие как пользовательский вывод или добавление чего-нибудь в базу данных. Колбэки для действий ничего не возращают назад при добавлении на хук.
Документация для WordPress разработчиков
Фильтры (Filters) дают возможность изменить данные в процессе выполнение WordPress ядра, плагинов или тем. Колбэки (Callback functions) для фильтров могут принимать переменные, изменять и возращать их. Все они работают в отдельности друг от друга и не должны создавать никаких побочных действий, такие как изменение глобальных переменных или вывод. Фильтры обязательно должны вернуть что-нибудь назад.
Документация для WordPress разработчиков
В двух словах, действия запускают какой-нибудь код, а фильтры — изменяют переменные. Давайте рассмотрим пару примеров:
Как технически работают хуки?
Пользователь отправляет какой-то HTTP запрос и интерпретатор PHP запускает нужные WordPress файлы, начиная с ядра, одним из файлов ядра является хранилище для хуков — WP_Hook класс. Затем PHP интерпретатор выполняет код строка за строкой и когда находит функции для добавления колбэков на хуки записывает их в хранилище. Очень важно, что колбэки не запускаются, а записываются в хранилище. Затем, интерпретатор находит функцию для запуска хука, смотрит в хранилище и запускает добавленные колбэк фукнции одна за одной по очереди.
Такой крутой механизм дает нам сумашедшую расширяемость для разработки. Вы разработчик плагина или темы? Вы можете легко изменить поведение ядра, любой другого плагина, или темы без особых проблем (если вы знаете как использовать хуки :)).
Вот, упрощенный пример:
Таким образом 1-й и 2-й плагины и тема могу взаимодействовать и влиять на код, который находится на какой-то странице или скрыт где-то на бэкенде. Правда круто?
Список фукнций, относящихся к хукам
Фукнции запускающие колбэки, которые были добавлены на хук (найболее используемые):
Фукнции запускающие колбэки, которые были добавлены на хук с несколькими аргументами, которые переданные по ссылкеp:
Устаревший фукнции для запуска колбэков. Все еще работают, но выдают warning:
Добавить колбэк на хук (найболее используемые):
Удалить колбэк с хука:
Удалить все колбэки с хука:
Получить кол-во раз, которые этот хук был вызван за текущий запрос:
Проверить, добавлен ли колбэк на текущий хук:
Получить имя текущего хука:
Обрабатывается ли в данный момент хук:
Что же такое колбэк?
Я думаю в ходе статьи вы уже устали от слова колбэк. Давайте разберемся, что это такое и почему это так важно для хуков? Итак, Callbale — это псевдотип в PHP. Так как нам нужно запускать наш код не сразу, а в какой-то определенный момент, мы должны дать всю нужную информцию о том, что конкретно нам нужно выполнить. Строку add_action( ‘save_post’, ‘notify_administrator’ ); мы должны читать как «на действие сохранения поста вызвать функцию оповещения администратора». Еще раз повторю, потому что это очень важно, мы ничего не вызываем, мы отвечаем на вопросы «Когда?» и «Что нужно запустить?».
В двух словах тип callable — это то, что мы можем запустить. И что же мы можем запустить в PHP? Мы можем запустить функции или публичные методы объекта или класса, но как из этого сделать callback? Просто передать названия метода или функции. Очень сильно рекомендую вам выучить и разобраться в синтаксисе, потому что разработчики WordPress работает с колбэками каждый день:
Посмотрели код? Теперь вернитесь и посмотрите еще раз. Советую выучить синтаксис и уметь понимать его автоматически при чтении кода, потому что колбэки — это основной механизм хуков и еще многих других вещей в WordPress.
Настройка PhpStorm для хуков
Настройка PHP интерпретатора и добавление путей проекта
Настройка WordPress как фреймворка
Результат настройки PhpStorm
В результате вы получите две очень великолепные функции: автодополнение хуков, которое поможет вам найти хук, если вы приблизительно знаете его имя.
Автодополнение WordPress хуков в PhpStorm.
И быстрый поиск вызова хуков. Вы можете кликнуть на значок h↑ и найти все места, где данный хук используется. В резульате, вы можете легко перейти в место, где данный хук используется и найти больше инфорации о его использовании или найти близьлежащие хуки, а так же документацию для хуков.
Быстрый поиск WordPress хуков в PhpStorm
Как раставить хуки?
Если вы пишите тему или плагин для массового использования, то вы обязательно должны оставить как можно больше хуков. Как это сделать правильно? На самом деле тема довольно сложна, потому что каждый случай уникальный, но я все же попробую:
Давайте рассмотрим на примере просто запроса в API:
И еще один пример, шорткод, который печатает какую-то таблицу:
Соглашение об именовании хуков
Для примера вы можете использовать Полное название класса (FQCN) + название метода + дополнительная инфорация(опционально). Давайте обновим наш код для запроса в API с помощью этого соглашения:
В таком случае мы всегда знаем, как назвать хук и уверены в том, что не будет никаких проблем с другой частью вашего приложения. Иногда конечно названия хуков будут иметь не совсем корректный порядок слов или не очевидные именна, но в таком случае мы должны упростить наш код, разбить на более мелкие методы. Самое важное, что в таком случае мы имеет четкое соглашение для именования хуков и можем это задокументировать и автоматизировать.
Причиной такого соглашения является упрощение работы для инстументов анализа кода, поиска в PhpStorm, инструментах генерации документации и т.д.