- Описание функции
- Примеры использования
- Добавление действия при загрузке страницы
- Изменение порядка выполнения функций
- Передача дополнительных аргументов в функцию
- Создание действия с высоким приоритетом
- Использование функции add_action() в плагинах
- Вопросы и ответы
- Как добавить функцию в хук?
- Как изменить порядок выполнения функций, связанных с хуком?
- Как указать количество аргументов, принимаемых функцией?
- Как удалить функцию из хука?
- Как проверить, существует ли функция в хуке?
- Как использовать приоритет для выполнения функций в хуке?
- Как использовать хук только на определенных страницах или шаблонах?
- Как использовать хук только для определенных пользовательских ролей?
- Связанные элементы
Описание функции
Функция add_action() добавляет обратный вызов (callback) функции к указанному хуку (hook) действия (action).
Хуки (hooks) в WordPress представляют собой места в коде, где можно вставить свой собственный код или функцию для выполнения определенных действий. Хуки используются для расширения функциональности WordPress и позволяют разработчикам вмешиваться в процесс обработки запросов и вывода контента.
Функция add_action() позволяет добавить свою функцию обратного вызова к определенному хуку действия. Когда хук действия срабатывает, все функции обратного вызова, добавленные к этому хуку, будут выполнены в указанном порядке.
Использование
add_action( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 ): true; В данном примере кода используется функция add_action() с указанными параметрами. Она добавляет функцию обратного вызова $callback к хуку действия $hook_name с заданным приоритетом $priority и количеством принимаемых аргументов $accepted_args. Функция всегда возвращает значение true.
$hook_name(string) — Обязательный. Название хука действия, к которому нужно добавить функцию обратного вызова.$callback(callable) — Обязательный. Функция обратного вызова, которая будет выполнена при срабатывании хука действия.$priority(int) — Необязательный. Используется для указания порядка выполнения функций, связанных с определенным хуком. Чем меньше число, тем раньше будет выполнена функция. Функции с одинаковым приоритетом выполняются в порядке их добавления к хуку. По умолчанию: 10.$accepted_args(int) — Необязательный. Количество аргументов, которые принимает функция обратного вызова. По умолчанию: 1.
Функция всегда возвращает значение true.
<?php
/**
* Функция обратного вызова для хука 'wp_footer'
*
* @param int $arg1 Первый аргумент.
* @param string $arg2 Второй аргумент.
*/
function my_custom_function( $arg1, $arg2 ) {
// Выполнение пользовательского кода
// ...
}
add_action( 'wp_footer', 'my_custom_function', 10, 2 );
?> В данном примере кода используется функция add_action() для добавления функции обратного вызова my_custom_function() к хуку действия wp_footer с приоритетом 10 и двумя аргументами. Когда хук wp_footer срабатывает, функция my_custom_function() будет выполнена, принимая два аргумента.
Примеры использования
Добавление действия при загрузке страницы
/**
* Функция, которая будет вызвана при загрузке страницы
*/
function my_custom_function() {
// Ваш код
}
// Добавление функции в качестве действия при загрузке страницы
add_action( 'init', 'my_custom_function' );
В данном примере функция my_custom_function() будет вызвана при загрузке страницы. Для этого используется хук init, который срабатывает на этапе инициализации WordPress.
Изменение порядка выполнения функций
/**
* Функция, которая будет вызвана первой
*/
function my_custom_function_1() {
// Ваш код
}
/**
* Функция, которая будет вызвана второй
*/
function my_custom_function_2() {
// Ваш код
}
// Добавление функций в качестве действия с разными приоритетами
add_action( 'init', 'my_custom_function_1', 5 );
add_action( 'init', 'my_custom_function_2', 10 );
В данном примере функции my_custom_function_1() и my_custom_function_2() будут вызваны при загрузке страницы, но с разными приоритетами. Функция с меньшим числовым значением приоритета будет вызвана раньше.
Передача дополнительных аргументов в функцию
/**
* Функция, которая принимает дополнительные аргументы
*/
function my_custom_function( $arg1, $arg2 ) {
// Ваш код
}
// Добавление функции с передачей дополнительных аргументов
add_action( 'init', 'my_custom_function', 10, 2 );
В данном примере функция my_custom_function() принимает два дополнительных аргумента $arg1 и $arg2. При добавлении функции в качестве действия, указывается третий параметр 2, который указывает, что функция ожидает два аргумента.
Создание действия с высоким приоритетом
/**
* Функция, которая будет вызвана с высоким приоритетом
*/
function my_custom_function() {
// Ваш код
}
// Добавление функции с высоким приоритетом
add_action( 'init', 'my_custom_function', 1 );
В данном примере функция my_custom_function() будет вызвана при загрузке страницы с высоким приоритетом. Приоритет 1 гарантирует, что функция будет вызвана одной из первых.
Использование функции add_action() в плагинах
/**
* Функция, которая будет вызвана при активации плагина
*/
function my_custom_function() {
// Ваш код
}
// Добавление функции в качестве действия при активации плагина
register_activation_hook( __FILE__, 'my_custom_function' );
В данном примере функция my_custom_function() будет вызвана при активации плагина. Для этого используется функция register_activation_hook(), которая регистрирует функцию в качестве действия при активации плагина.
Вопросы и ответы
Как добавить функцию в хук?
Для добавления функции в хук в WordPress используется функция add_action(). Она принимает несколько параметров: название хука, коллбэк-функцию, приоритет выполнения и количество принимаемых аргументов.
Пример использования:
function my_custom_function() {
// код функции
}
add_action( 'my_custom_hook', 'my_custom_function' );
Как изменить порядок выполнения функций, связанных с хуком?
Для изменения порядка выполнения функций, связанных с хуком, используется параметр $priority функции add_action(). Чем меньше значение приоритета, тем раньше будет выполнена функция.
Пример использования:
function my_custom_function1() {
// код функции 1
}
function my_custom_function2() {
// код функции 2
}
add_action( 'my_custom_hook', 'my_custom_function1', 20 );
add_action( 'my_custom_hook', 'my_custom_function2', 10 );
Как указать количество аргументов, принимаемых функцией?
Для указания количества аргументов, принимаемых функцией, используется параметр $accepted_args функции add_action(). По умолчанию функция принимает один аргумент.
Пример использования:
function my_custom_function( $arg1, $arg2 ) {
// код функции
}
add_action( 'my_custom_hook', 'my_custom_function', 10, 2 );
Как удалить функцию из хука?
Для удаления функции из хука используется функция remove_action(). Она принимает те же параметры, что и функция add_action().
Пример использования:
function my_custom_function() {
// код функции
}
add_action( 'my_custom_hook', 'my_custom_function' );
// Удаление функции из хука
remove_action( 'my_custom_hook', 'my_custom_function' );
Как проверить, существует ли функция в хуке?
Для проверки существования функции в хуке можно использовать функцию has_action(). Она принимает два параметра: название хука и название функции. Если функция зарегистрирована для данного хука, то функция вернет true, в противном случае — false.
if ( has_action( 'my_custom_hook', 'my_custom_function' ) ) {
echo 'Функция my_custom_function зарегистрирована для хука my_custom_hook';
} else {
echo 'Функция my_custom_function не зарегистрирована для хука my_custom_hook';
}
Как использовать приоритет для выполнения функций в хуке?
Приоритет позволяет управлять порядком выполнения функций, зарегистрированных для одного и того же хука. Чем меньше значение приоритета, тем раньше будет выполнена функция. По умолчанию, если приоритет не указан, значение равно 10.
add_action( 'my_custom_hook', 'my_custom_function', 5 );
В данном примере функция my_custom_function будет выполнена раньше, чем другие функции, зарегистрированные для хука my_custom_hook.
Как использовать хук только на определенных страницах или шаблонах?
Для использования хука только на определенных страницах или шаблонах можно использовать функцию is_page() или is_page_template(). Функция is_page() принимает параметр — идентификатор страницы или массив идентификаторов. Функция is_page_template() принимает параметр — название шаблона страницы.
if ( is_page( 42 ) ) {
add_action( 'my_custom_hook', 'my_custom_function' );
}
В данном примере функция my_custom_function будет выполнена только на странице с идентификатором 42.
Как использовать хук только для определенных пользовательских ролей?
Для использования хука только для определенных пользовательских ролей можно использовать функцию current_user_can(). Она принимает параметр — название роли и возвращает true, если текущий пользователь имеет указанную роль, и false в противном случае.
if ( current_user_can( 'editor' ) ) {
add_action( 'my_custom_hook', 'my_custom_function' );
}
В данном примере функция my_custom_function будет выполнена только для пользователей с ролью «Редактор».
Функция
add_action()является одной из основных функций WordPress для регистрации функций, которые должны быть выполнены при определенных событиях. Она позволяет добавлять функции в хуки, управлять их порядком выполнения с помощью приоритета, а также использовать хуки только на определенных страницах, шаблонах или для определенных пользовательских ролей. Это мощный инструмент, который позволяет разработчикам создавать гибкие и расширяемые темы и плагины для WordPress.
Связанные элементы
- Функция
do_action(): вызывает все функции, привязанные к указанному хуку. - Функция
has_action(): проверяет, есть ли функции, привязанные к указанному хуку. - Функция
remove_action(): удаляет функцию из указанного хука. - Функция
did_action(): проверяет, был ли вызван указанный хук. - Хук
init: вызывается при инициализации WordPress и используется для регистрации функций и хуков. - Хук
wp_head: вызывается внутри тега<head>на каждой странице и позволяет добавлять дополнительные элементы в заголовок страницы. - Хук
wp_footer: вызывается перед закрывающим тегом</body>на каждой странице и позволяет добавлять дополнительные элементы в конец страницы. - Хук
admin_init: вызывается при инициализации административной части WordPress и используется для регистрации функций и хуков, специфичных для административной части. - Хук
wp_enqueue_scripts: вызывается при загрузке скриптов и стилей на фронтенде WordPress и позволяет добавлять или изменять загружаемые ресурсы. - Класс
WP_Hook: представляет собой контейнер для хуков и функций, привязанных к ним.