init
Событие срабатывает после того, как WordPress полностью загружен, но до того, как любые header заголовки были отправлены.
init — это популярное событие. Обычно используется плагинами для инициализации себя. Этот хук удобен по многим причинам: например, нужно определять пользователя, нужны таксономии, нужны функции установленные в теме (файл functions.php или другой).
К моменту срабатывания init текущий пользователь авторизован (global $current_user уже определена) и установлены все основные глобальные переменные и функции WordPress. Также функции темы уже подключены и все установки установлены: размеры картинок миниатюр, поддержка меню и т.д.
События которые срабатывают до init:
muplugins_loaded
registered_taxonomy
registered_post_type
plugins_loaded
sanitize_comment_cookies
setup_theme
load_textdomain
after_setup_theme
auth_cookie_malformed
auth_cookie_valid
set_current_user
init
Использование
add_action( 'init', 'action_function_name_11' );
function action_function_name_11() {
// Действие...
}
Примеры
#1 Обработка $_GET
запроса
Допустим нам нужно перенаправить ссылку на страницу регистрации, если в запросе указана переменная register:
add_action('init', 'redirect_to_register');
function redirect_to_register(){
if( isset( $_GET['register'] ) ) {
wp_redirect( site_url() . 'wp-register.php');
exit;
}
}
#2 Подключение к другим событиям из init
add_action('init','all_my_hooks');
function all_my_hooks(){
// подключение более поздних событий
add_action('admin_init', 'my_function_name');
add_action('admin_menu', 'my_function_name');
}
Где вызывается хук
/wp-settings.php
init
wp-settings.php 523
do_action( 'init' );
Где используется хук (в ядре WP)
add_action( 'init', 'register_block_core_archives' );
add_action( 'init', 'register_block_core_block' );
add_action( 'init', 'register_block_core_calendar' );
add_action( 'init', 'register_block_core_categories' );
add_action( 'init', 'register_block_core_latest_comments' );
add_action( 'init', 'register_block_core_latest_posts' );
add_action( 'init', 'register_block_core_rss' );
add_action( 'init', 'register_block_core_search' );
add_action( 'init', 'register_block_core_shortcode' );
add_action( 'init', 'register_block_core_tag_cloud' );
remove_action( 'init', 'wp_cron' );
add_action( 'init', array( $this, 'init' ), 0 );
add_action( 'init', 'wp_widgets_init', 1 );
add_action( 'init', 'rest_api_init' );
add_action( 'init', 'create_initial_taxonomies', 0 ); // highest priority
add_action( 'init', 'kses_init' );
add_action( 'init', 'create_initial_post_types', 0 ); // highest priority
add_action( 'init', 'check_theme_switched', 99 );
add_action( 'init', '_show_post_preview' );
add_action( 'init', 'wp_schedule_delete_old_privacy_export_files' );
add_action( 'init', 'smilies_init', 5 );
add_action( 'init', 'wp_cron' );
add_action( 'init', 'wp_init_targeted_link_rel_filters' );
add_action( 'init', 'ms_subdomain_constants' );
add_action( 'init', 'maybe_add_existing_user_to_blog' );
add_action( 'init', 'wp_schedule_update_checks' );