init
Это хук WordPress - init. Плагин его просто использует.
Событие срабатывает после того, как WordPress полностью загружен, но до того, как любые header заголовки были отправлены.
init - это популярное событие. Обычно используется плагинами для инициализации себя. Этот хук удобен по многим причинам: например, нужно определять пользователя, нужны таксономии, нужны функции установленные в теме (файл functions.php или другой).
К моменту срабатывания init текущий пользователь авторизован (global $current_user уже определена) и установлены все основные глобальные переменные и функции WordPress. Также функции темы уже подключены и все установки установлены: размеры картинок миниатюр, поддержка меню и т.д.
Вместо init можно использовать wp_loaded - это практически одинаковые события. wp_loaded срабатывает сразу после init и после проверки ms_site_check() (проверяет текущий блог в мультисайтовой сборке). wp_loaded не сработает, если текущий блог не пройдет проверку на работоспособность (не активен, удален, заспамлен, в архиве).
События которые срабатывают до 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', 'wp_kama_init_action' );
/**
* Function for `init` action-hook.
*
* @return void
*/
function wp_kama_init_action(){
// action...
}
Примеры
#1 Подключение к другим событиям из 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');
} #2 Обработка $_GET запроса
Допустим нам нужно перенаправить ссылку на страницу регистрации, если в запросе указана переменная register:
add_action('init', 'redirect_to_register');
function redirect_to_register(){
if( isset( $_GET['register'] ) ) {
wp_redirect( site_url() . 'wp-register.php');
exit;
}
}
Где вызывается хук
do_action( 'init' );
Где используется хук в WP CLI
remove_action( 'init', 'wp_cron' );
add_action( 'init', 'kses_remove_filters', 11 );