Хук init
в WordPress — один из наиболее часто используемых хуков. Он срабатывает после загрузки WordPress, но до того, как будут отправлены любые заголовки HTTP. Это позволяет плагинам и темам выполнять различные задачи в ранней стадии загрузки сайта.
do_action( ‘init’ )
Хук init
вызывается после того, как WordPress завершил свою инициализацию, но еще до того, как будут отправлены любые заголовки. На момент срабатывания этого хука, все основные глобальные переменные и функции WordPress, такие как авторизация пользователя и настройки темы, уже доступны. Поэтому, это идеальное место для выполнения задач, которые требуют взаимодействия с базой данных, а также для регистрации типов записей, таксономий и других функциональностей, которые должны быть доступны в начале работы сайта.
Хук init
широко используется плагинами для различных задач, например, для обработки данных формы, регистрации новых таксономий или пост-типов.
Когда Использовать Хук init
- Регистрация типов записей и таксономий: Это можно сделать с помощью
register_post_type
илиregister_taxonomy
. - Обработка данных из формы: Хук идеально подходит для обработки данных, отправленных через формы, например, для работы с переменными
$_GET
и$_POST
. - Загрузка текстовых доменов: Если ваш плагин или тема использует локализацию, вы можете загрузить текстовые домены через
load_plugin_textdomain
. - Настройка редиректов: Это место для выполнения редиректов, так как пользователь уже авторизован.
Пример 1: Регистрация Плагина и Подключение К Другим Событиям
add_action('init', 'my_plugin_register_hooks');
function my_plugin_register_hooks() {
// Подключаем другие хуки, которые срабатывают после 'init'
add_action('admin_init', 'my_plugin_admin_init');
add_action('admin_menu', 'my_plugin_admin_menu');
}
function my_plugin_admin_init() {
// Дополнительные действия для панели управления
}
function my_plugin_admin_menu() {
// Регистрация пользовательских страниц меню
}
В этом примере хук init
используется для подключения к более поздним событиям, таким как admin_init
и admin_menu
, которые происходят позже в процессе загрузки.
Пример 2: Обработка Запросов $_GET
Допустим, вы хотите перенаправить пользователя на страницу регистрации, если в URL есть переменная register
.
add_action('init', 'redirect_to_register_page');
function redirect_to_register_page() {
if ( isset( $_GET['register'] ) ) {
wp_redirect( site_url( '/wp-register.php' ) );
exit;
}
}
В этом примере хук init
используется для обработки запросов, например, для перенаправления пользователя на страницу регистрации, если в запросе передана переменная register
.
Пример 3: Загрузка Текстового Домена
Для плагинов и тем важно правильно подключать переводы, чтобы пользователи могли видеть интерфейс на своем языке. Это можно сделать через хук init
.
add_action( 'init', 'mytheme_load_textdomain' );
function mytheme_load_textdomain() {
load_theme_textdomain( 'mytheme', get_template_directory() . '/languages' );
}
В данном примере мы используем хук init
для загрузки текстового домена, который отвечает за локализацию темы.
Пример 4: Создание Произвольного Типа Записей и Таксономии
add_action('init', 'create_custom_post_type_and_taxonomy');
function create_custom_post_type_and_taxonomy() {
// Регистрация пользовательского типа записи
register_post_type('book', array(
'labels' => array(
'name' => 'Books',
'singular_name' => 'Book'
),
'public' => true,
'has_archive' => true,
'supports' => array('title', 'editor', 'thumbnail'),
));
// Регистрация таксономии для книги
register_taxonomy('genre', 'book', array(
'label' => 'Genres',
'hierarchical' => true,
));
}
Здесь хук init
используется для регистрации пользовательского типа записи «book» и таксономии «genre», которые будут использоваться для управления контентом на сайте.
Советы по Использованию Хука init
- Не используйте вывод на экран в этом хуке. Хук
init
вызывается до отправки заголовков, и если вы попытаетесь вывести что-либо на экран, это может привести к ошибкам или некорректной работе сайта. - Используйте для регистрации кастомных типов записей и таксономий. Это идеальное место для регистрации нестандартных типов записей (например, книги, отзывы) и таксономий.
- Использование
wp_loaded
послеinit
. Если вам нужно выполнить действия, которые зависят от загрузки всего контента сайта (например, загруженные плагины), вы можете использовать хукwp_loaded
, который срабатывает послеinit
и позволяет обрабатывать более поздние этапы загрузки.
Заключение
Хук init
является ключевым инструментом для настройки и инициализации функционала сайта на ранних стадиях его загрузки. Он идеально подходит для регистрации новых типов записей, обработки данных формы и других важнейших задач. Используя его правильно, можно эффективно управлять поведением сайта с момента его инициализации.