Что такое хук в 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.
Приступаем к работе
Надеюсь, что теперь выбудете лучше понимать решения, которые приводятся на разных форумах.
Дайте знать, что вы думаете по этой теме в комментариях. За комментарии, подписки, дизлайки, отклики, лайки низкий вам поклон!
Дайте знать, что вы думаете по данной теме в комментариях. Мы крайне благодарны вам за ваши комментарии, отклики, подписки, дизлайки, лайки!
10 полезных хук-хаков для WordPress
ВВЕДЕНИЕ
Хуки являются очень полезными фишками в WordPress. Они позволяют как бы «посадить» пользовательскую функцию «на крючок» функции существующей, разрешая тем самым изменять функциональность WordPress без внесения изменений в файлы ядра движка. В этой статье мы представляем Вам 10 особенно полезных, готовых к использованию хуков для WordPress, с примерами и пояснениями их исходников.
ЧТО ТАКОЕ ХУК?
Для достижения определенного эффекта нам нужно слегка изменить принцип работы WordPress. Некоторые модификации необходимо внести в файлы, которые были названы разработчиками файлами ядра – они нужны для того, чтобы WordPress работал должным образом.
Но изменение файлов ядра – плохая идея: это может создать брешь в системе безопасности блога. Также, все модификации исчезнут, как только Вы обновите движок до новой версии.
Однако, расширение функциональности все же необходимо. Для этого разработчиками был придуман Plugin API.
Хуки являются одним из главных блоков для построения плагинов. Почти каждый подключаемый плагин использует хуки для расширения функциональности WordPress.
КАК ИСПОЛЬЗОВАТЬ ХУКИ В ВАШЕМ БЛОГЕ
Пока Вы не написали свой плагин, Вы должны записать хуки в файл functions.php. Этот файл находится в директории wp-content/themes/yourtheme (где /yourtheme – директория, в которой находится текущая тема).
Вот пример, который показывает, как подключить Вашу пользовательскую функцию к функции ядра движка:
В этом примере мы подключили пользовательскую функцию myCustomFunction() к функции ядра publish_post(). Функция myCustomFunction() будет выполняться при каждом выполнении функции publish_post().
Конечно, мы можем также удалить хук, используя функцию remove_action():
1. ОТКЛЮЧАЕМ АВТОМАТИЧСКОЕ ФОРМАТИРОВАНИЕ В WORDPRESS
Проблема.
Вы, наверное, уже замечали, что типограф WordPress по умолчанию превращает «прямые» кавычки в «кривые» и делает другие мелкие изменения в форматировании поста.
Это хорошо, если блоггер размещает обычный контент (подразумеваются обычный текст и картинки). Но некоторые постят исходный код, чтобы потом его обсуждать, и они будут очень недовольны, когда из-за этих «кривых» кавычек интерпретатор иди компилятор выдадут им сообщения о синтаксических ошибках.
Решение.
Просто вставьте в файл functions.php нижеследующий код:
После того, как Вы это сделали, можете использовать тэг [raw] для того, чтобы текст поста был не отформатирован автоматически:
[raw]This text will not be automatically formatted.[/raw]
Объяснение кода.
Первым делом, мы создаем функцию, которая, основываясь на регулярных выражениях, находит тэг [raw] в содержании Вашего поста.
Далее, мы привязываем нашу функцию my_formatter() к функции the_content(), что означает выполнение нашей функции всякий раз, когда вызывается функция the_content().
Для того, чтобы отключить автоформатирование, мы использовали функцию remove_filter().
2. ОПРЕДЕЛЯЕМ БРАУЗЕР ПОСЕТИТЕЛЯ ПРИ ПОМОЩИ ХУКОВ
Проблема.
Кросс-браузерная совместимость – это наиболее распространенная проблема в web-разработке. Вы сэкономите много нервов и времени, если сможете определить браузер пользователя, зашедшего на Ваш блог, а затем создав CSS-класс для тэга body под каждый из браузеров.
Решение.
Ничего сложного: просто вставьте нижеследующий код в файл functions.php, сохраните его – все готово!
После того, как Вы сохраните файл, функция автоматически будет добавлять CSS-класс, соответствующий пользовательскому браузеру, для тэга body:
Объяснение кода.
WordPress имеет глобальные переменные, которые возвращают true, если пользователь использует соответствующий браузер. Если пользователь использует браузер Google Chrome, то переменная $is_chrome примет значение true. Вот для чего мы и создаем функцию browser_body_class(). После этого мы присоединяем ее к WordPress функции body_class().
3. ОПРЕДЕЛЕНИЕ ТЕКСТА ПО УМОЛЧАНИЮ В РЕДАКТОРЕ TinyMCE
Проблема.
Многие блоггеры почти всегда используют для своего блога один и тот же формат. Сообщения в моем блоге WpRecipes.com всегда отображаются одинаково: текст, код, еще немного текста.
Можно сэкономить немало времени, если научить TinyMCE отображать какой-нибудь текст по умолчанию.
Решение.
Как всегда, решением является хук. Копируем код в файл functions.php и смотрим, как он работает.
Объяснение кода.
Этот код хоть и простой, но очень мощный. Просто создаем функцию, которая возвращает требуемый текст (в этом примере мы определяем текст, который спрашивает у посетителей о подписке на RSS-ленту), и присоединяем ее к WordPress-функции default_content(). Вот так.
4. ВСТАВЛЯЕМ КОНТЕНТ АВТОМАТИЧЕСКИ ПОСЛЕ КАЖДОГО ПОСТА
Проблема.
В большинстве блогов для вывода контента после каждого поста файл single.php, но вот беда: этот контент не будет отображаться в RSS-ленте. Хуки помогут исправить эту проблему.
Решение.
Все то же самое – просто копируем следующий код в файл fucntions.php.
Enjoyed this article?
Subscribe to our RSS feed and never miss a recipe!
Объяснение кода.
Суть функции insertFootNote() проста: он лишь конкатенирует желаемый текст к переменной $content, в которой хранится содержание поста.
Затем, мы присоединяем нашу функцию insertFootNote() к функции the_content().
Видите в строке 2 вот такой код:
Если Вам нужно, чтобы текст попадал в RSS-ленту, то замените предыдущий код на этот:
5. ОТКЛЮЧАЕМ СООБЩЕНИЕ С ПРОСЬБОЙ ОБНОВИТЬСЯ В ПАНЕЛИ УПРАВЛЕНИЯ WORDPRESS
Проблема.
Вы можете видеть информацию о наличии новой версии WordPress вверху дашборда. Это действительно хорошая штука, так как обновление закрывает дыры в безопасности и позволяет пользоваться Вам последними возможностями движка. Но если блог не Ваш лично, а является проектом для кого-нибудь из клиентов, то давать возможность клиентам самим обновляться – не есть хорошая идея.
Решение.
Просто вставьте следующий код в файл fucntions.php.
После того, как Вы сохраните файл functions.php, сообщения Вы больше не увидите.
Объяснение кода.
Для начала, убедимся, что текущий пользователь обладает достаточными правами администратора, чтобы можно было обновить WordPress. Как только мы в этом убедились, создаем пару хуков, которые переписывают правила отображения сообщений в дашборде.
6. ОТКЛЮЧАЕМ АВТОСОХРАНЕНИЕ ПОСТОВ
Проблема.
WordPress периодически сохраняет пост по мере его введения. Это полезная возможность, но иногда она не требуется.
Решение.
Для того, чтобы отключить автосохранение поста, просто откройте файл functions.php и вставьте в него следующий код.
Объяснение кода.
И вновь, ничего сложного: мы просто создаем функцию, которая отключается автосохранение и привязываем ее к WordPress-функции wp_print_scripts().
7. ИЗБАВЛЯЕМСЯ ОТ ПОВТОРЯЮЩЕГОСЯ КОНТЕНТА НА СТРАНИЦАХ С КОММЕНТАРИЯМИ
Проблема.
Повторяющийся контент эта довольно распространенная SEO-проблема.
Введенная в WordPress версии 2.7 система разбиения комментариев на страницы эту проблему не решает.
Для предупреждения повторяющегося контента в комментариях будем использовать атрибут rel=«canonical».
Решение.
Копируем следующий код и вставляем его в файл functions.php.
Объяснение кода.
Сначала, мы создаем функцию, которая добавляет к каждой странице с комментариями, кроме первой, тэг link с атрибутом rel=«canonical». Затем, присоединяем эту функцию к WordPress-функци wp_head().
8. ПОЛУЧЕНИЕ ПОСТА ИЛИ СТРАНИЦЫ В КАЧЕСТВЕ PHP-ПЕРЕМЕННОЙ
Проблема.
Возможность получить текущий пост или целую страницу в качестве PHP переменной – действительно крутая вещь. Скажем, Вы можете заменять некоторые части контента при помощи функции str_replace() или делать с ним еще что-нибудь.
Решение.
И снова ничего сложного. Делаем все то же самое: вставляем следующий код в файл functions.php.
Объяснение кода.
9. ИСПОЛЬЗУЕМ ХУКИ И CRON ДЛЯ СОБЫТИЙ ПО РАСПИСАНИЮ
Проблема.
Вы, наверное, уже знаете, что WordPress может использовать события по расписанию. К примеру, можно публиковать посты в конкретное, установленное заранее, время. Используя хуки и wp-cron, мы можем запросто задать расписание для нашего собственного события. В следующем примере мы заставим блог отправлять нам сообщения на e-mail один раз каждый час.
Решение.
Вставляем следующий код в файл functions.php.
Объяснение кода.
Первое, что мы сделаем, конечно, — это создадим функцию, которая будет выполнять требуемое действие. В этом примере эта функция называется my_task_function() и она просто отправляет письмо на указанный e-mail адрес.
Для того, чтобы запланировать выполнение этой функции, мы будем использовать функцию wp_schedule_event(). Последним аргументом, передаваемым ей, будет наш хук, поэтому мы «цепляем» нашу функцию my_task_function() к my_task_hook.
10. СПИСОК ВСЕХ «ХУКНУТЫХ» ФУНКЦИЙ
Проблема.
Когда что-то идет не так, здорово может пригодиться список всех «хукнутых» функций.
Решение.
Как и все предыдущие фрагменты кода следующий также необходимо вставить в файл functions.php. Только не забудьте удалить его после использования. Если Вы этого не сделаете, то сообщения будут появляться и после отладки.
После того, как Вы вставите этот код в файл functions.php, вызовите функцию list_hooked_functions(). Она и покажет Вам список всех «хукнутых» функций.
Объяснение кода.
Данный код выясняет, передается ли имя хука в качестве аргумента функции. Если передается, то на экран выводится имя хука. Также можно посмотреть хуки только для определенной функции:
Что такое 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
В результате вы получите две очень великолепные функции: автодополнение хуков, которое поможет вам найти хук, если вы приблизительно знаете его имя.

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

Как раставить хуки?
Если вы пишите тему или плагин для массового использования, то вы обязательно должны оставить как можно больше хуков. Как это сделать правильно? На самом деле тема довольно сложна, потому что каждый случай уникальный, но я все же попробую:
Давайте рассмотрим на примере просто запроса в API:
И еще один пример, шорткод, который печатает какую-то таблицу:
Соглашение об именовании хуков
Для примера вы можете использовать Полное название класса (FQCN) + название метода + дополнительная инфорация(опционально). Давайте обновим наш код для запроса в API с помощью этого соглашения:
В таком случае мы всегда знаем, как назвать хук и уверены в том, что не будет никаких проблем с другой частью вашего приложения. Иногда конечно названия хуков будут иметь не совсем корректный порядок слов или не очевидные именна, но в таком случае мы должны упростить наш код, разбить на более мелкие методы. Самое важное, что в таком случае мы имеет четкое соглашение для именования хуков и можем это задокументировать и автоматизировать.
Причиной такого соглашения является упрощение работы для инстументов анализа кода, поиска в PhpStorm, инструментах генерации документации и т.д.
Хуки: фильтры и действия. Подробное руководство.
Возможно я не совсем правильно написал названия этих вещей в заголовке, но я сейчас объясню вам почему.
Хук (hook) — означает крючок.
Наши хуки будут делиться на два вида: фильтры и действия.
Что важно знать перед началом работы с хуками WordPress?
Вам будет намного легче разобраться в механизме хуков, если вы знаете про массивы, функции, чуть-чуть про классы, хорошо понимаете, как работают глобальные переменные.
Также я встречал много кода, где на хук вешается анонимная функция, хотя я и не рекомендую её использовать по нескольким причинам (требуется PHP 5.3.0, некорректно работают с PHP ускорителями, невозможность отмены такого хука функцией remove_filter() или remove_action()), но просто знать, что она существует и как выглядит — стоит.
Также я бы порекомендовал вам текстовый редактор с поиском по файлам в папке, например TextWrangler для Mac OS или Notepad++ для Windows.
Пошаговый разбор работы фильтра
Основная задача фильтра — дополнительно изменить значение какой-либо переменной при помощи произвольной функции, не затрагивая при этом основные файлы движка или плагинов.
Делается это в принципе при помощи двух функций — apply_filters() и add_filter().
Простейший пример с содержимым поста внутри самого движка WordPress
Возможно вы уже где встречали этот пример — он есть в официальной документации WordPress, да и я о нём уже упоминал.
Скажите, то содержимое поста, которое находится у вас в редакторе в админке и то, которое выводится на сайте одно и то же или отличается?
Вероятно, это одна из тех вещей, которая фильтруется больше всего, при помощи фильтра the_content на содержимое поста накладываются функции wpautop(), wptexturize(), применяются шорткоды. Кроме того, пользователь тоже мог нагуглить какие-нибудь хуки и с их помощью, скажем, выводить кнопки социальных сетей под постом.
Чтобы посмотреть наглядно, попробуйте вставить этот код в удобное место в теме, в footer.php или в произвольный шаблон страницы:
Пошаговый разбор работы хука действия
Задача хука действия — в определенном месте в коде дать возможность выполнить вспомогательную функцию извне, не изменяя при этом самого кода.
Делается всё это так же, как и в случае с фильтрами, двумя функциями — do_action() и add_action()
Ну разве не простой механизм?
Простейший пример с использованием хука wp_head в WordPress
Просто wp_head это первое, что пришло мне сейчас в голову. Итак, прежде всего откройте страницу вашего сайта, откройте её и в виде HTML-кода в браузере. А теперь зайдите в файл header.php и быстрым нажатием клавиши удалите оттуда функцию wp_head() (она и запускает хук). После этого посмотрите, как сильно изменится ваша страница — исчезнут стили, скрипты, возможно какой-то произвольный код, который вы вручную добавляли через этот хук.
Параметры и приоритеты
Приоритеты
А теперь внимание — функции add_action() и add_filter() третьим параметров поддерживают указание приоритета, с учетом этого видоизменим наш код.
Как видите, чем выше значение приоритета, тем позднее функция будет подключена к хуку и выполнена.
Передача дополнительных аргументов в функцию
Чего ещё не хватает для полного счастья — передачи в подвешенные на хук функции дополнительных параметров. И эта возможность тоже предусмотрена.
Всё начинается с того, что в функции do_action() или apply_filters() указывается один или несколько параметров.
После этого, четвёртым параметром функции add_action() или add_filter() соответственно вы можете решить, сколько из них можно передать непосредственно в функцию.
Удаление (отключение) нежелательных хуков и действий
Иногда бывает нужно отключить какой-либо фильтр или действие, хорошие примеры — отключение проверки обновлений WordPress, или отключение автозамены URL в комментариях на кликабельные ссылки.
Если сильно вдаваться в подробности, то мы никаких хуков не удаляем, просто мы снимаем с хука функцию.
Всего для этих целей в WordPress существует 4 функции:
Однако я открою вам секрет — вы можете никогда не использовать функции для очистки хука действия, потому как они полностью идентичны аналогичным функция отключения фильтров!
То есть remove_action() и remove_filter() это абсолютно одно и то же. То же самое касается функций полной очистки хука.
Что дальше?
Теперь, зная основы, вы можете поискать примеры прямо у меня на блоге под метками Хуки или functions.php.
Под постом есть ссылки на другие руководства по ключевым темам WordPress.
И конечно, если вам что-то непонятно — отвечу на ваш вопрос или помогу с кодом в комментариях к посту.

