Как использовать WordPress Action Hooks в настройке темы

Дочерние темы WordPress позволяют относительно легко настроить внешний вид темы. Если параметры темы не предоставляют адекватных вариантов дизайна, вы можете просто добавить новое правило в файл стилей по умолчанию для дочерней темы с именем style.css. Но что происходит, когда вы также хотите изменить функциональность темы? Это один из случаев, когда действия WordPress приходят к вам на помощь.

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

О WordPress Крючки

Ловушки WordPress работают в некоторой степени аналогично реальным хукам в том смысле, что вы можете поймать нужную рыбу в нужном месте, если правильно их использовать.

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

В WordPress есть два типа хуков: действия а также фильтры, В этом посте мы рассмотрим, как мы можем использовать хуки действий в настройке темы.
WP Крючки

Как работают WordPress Hooks

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

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

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

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

Найти крючки для действий

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

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

Если говорить о настройке темы, хуки действий могут происходить из двух разных мест: из WordPress Core и самой темы. Есть темы, которые вообще не имеют зацепок, но другие предоставляют разработчикам некоторые или многие из них — это всегда выбор автора темы. По умолчанию Twenty Fifteen Theme имеет только один хук действия для настройки нижнего колонтитула под названием «двадцать пятнадцать_кредитов».

Если вам нравится просматривать исходный код, вы также можете легко найти хуки действий. Хуки действий добавляются в код с do_action () Функция WordPress.

Если вы выполните быстрый поиск выражения «do_action» в более продвинутом редакторе кода — как я это делал в Eclipse ниже — вы можете увидеть список мест, где вы можете подключить свои пользовательские функции к ядру. Я искал в / WP-включает / папку, но вы также можете запустить поиск / WP-администратора / папка, которая содержит хуки действий, связанные с панелью управления WordPress (область администратора).
Действие Хуки в WP ВключаетХорошо, что имена хуков действий обычно довольно понятны, но внутри кода обычно есть хороший комментарий, который может дать вам больше информации о том, хорош ли данный хук действия по той причине, для которой вы хотите его использовать. ,

Например, комментарий к коду перед хуком действия widgets_init говорит, что он «срабатывает после того, как все виджеты WordPress по умолчанию зарегистрированы». Если вы посмотрите на код перед этим действием, вы можете найти инициализацию всех WP-виджетов по умолчанию перед ним — так что вы можете быть уверены, что комментарий не лгал, и если вы хотите зарегистрировать свой собственный виджет, это будет правильное место.

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

Добавьте свои собственные действия

Если вы хотите добавить собственное действие, вам нужно создать пользовательскую функцию и связать эту функцию с определенным хуком действия, используя add_action () Функция WordPress. Пользовательские действия, добавленные с помощью функции add_action (), обычно запускаются на месте, когда ядро ​​вызывает соответствующую функцию do_action ().

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

Давай подумаем. Если бы вы хотели добавить значок в виде простой HTML-страницы, куда бы вы его поместили? Конечно, вам нужно разместить его внутри раздел HTML-файла со следующей разметкой:

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

(1) Открыть Действие Ссылкаи посмотрите, что он может предложить. Нам повезло, как будто мы просматриваем действия, мы можем найти только один, wp_headто, что на основе его имени может быть связано с загрузкой раздел.

(2) Чтобы быть уверенным, давайте проверим документацию в Кодексе WordPress. Кодекс рекомендует, чтобы «вы использовали эту ловушку, передавая эхо-функции своей функции в браузер», поэтому сейчас она кажется идеальной для нас. Но давайте проверим это в исходном коде.

(3) Так как этот хук не относится к области администратора, нам нужно запустить наш поиск в / WP-включает / папки. Если мы будем искать слово «wp-head», мы получим много результатов, так как это конкретное действие используется WP Core много раз.

Нам нужно найти место, где оно определено, поэтому ищите выражение do_action («wp_head». Обратите внимание, что мы не завершили скобки, так как пока не можем быть уверены, есть ли у этого действия параметры или нет.

Eclipse возвращает только один результат, который можно найти внутри /wp-includes/general-template.php файл. Комментарий до определения ловушки действий говорит, что он «печатает скрипты или данные в теге head на переднем конце», так что теперь мы можем быть уверены, что wp_head — это нужная нам ловушка действий.
Найти wp_headПроверка параметров
Когда вы добавляете свои собственные действия, вы также должны быть уверены, что хук, который вы хотите использовать, принимает параметры или нет. Вы можете легко это выяснить, посмотрев на функцию do_action ().

Синтаксис функции do_action () следующий:

do_action (‘name_of_action'[, $parameter1, $parameter2, …] )

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

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

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

Давайте посмотрим на разницу в синтаксисе do_action () двух случаев:

do_action (‘wp_head’);

do_action (‘wp_register_sidebar_widget’, $ widget);
В первом случае нет параметров, поэтому пользовательская функция будет использовать следующий синтаксис:

function my_function_without_parameters () {…}

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

function my_function_with_parameters ($ widget) {…}

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

Сначала создайте новую функцию без каких-либо аргументов, затем привяжите ее к хуку действий wp_head с помощью add_action () Функция WordPress.

function custom_add_favicon () {

    эхо«;

}
add_action (‘wp_head’, ‘custom_add_favicon’);
Вам нужно сначала передать имя хука действия функции add_action () в качестве аргумента, а затем добавить имя своей пользовательской функции.

Это два обязательных параметра add_action (). Он также имеет два необязательных параметра: приоритет и принятые аргументы. Давайте посмотрим, как их использовать.
Определить приоритеты
Во многих случаях бывает, что к одному хуку привязано более одного действия. Так какой из них будет казнен первым? Здесь мы можем использовать необязательный параметр $ priority функции add_action ().

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

Поэтому, если мы считаем, что значок должен быть там раньше, мы можем улучшить наш предыдущий вызов add_action () следующим образом:

add_action ('wp_head', 'custom_add_favicon', 5);

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

Хук действия «wp_register_sidebar_widget» принимает один параметр, поэтому, когда мы привязываем нашу пользовательскую функцию к этому хуку, мы также должны включить его в качестве аргумента при вызове функции add_action ().

Наш код в этом случае будет выглядеть так:

function my_sidebar_widget_function ($ widget) {

// Ваш код

}
add_action (‘wp_register_sidebar_widget’, ‘my_sidebar_widget_function’, 10, 1);

Обратите внимание, что мы также должны добавить приоритет (мы выбрали здесь значение по умолчанию 10), чтобы убедиться, что WordPress знает, что означает каждый параметр. Если мы опускаем приоритет, WordPress может предположить, что 1 является приоритетом, который не является истинным, поскольку он указывает количество принятых аргументов.

Вывод

Вы можете провести много экспериментов с хуками действий в настройке темы. Например, вы можете добавить свои собственные сценарии (JS) и стили (CSS) с помощью wp_enqueue_scripts ловушку действия или ваш код Google Analytics с wp_footer действие крюк.

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

Если вы являетесь автором темы и хотите создать расширяемую тему, неплохо было бы добавить свои собственные обработчики действий в соответствующие файлы шаблонов с помощью функции do_action ().

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

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *