init
Подія спрацьовує після того, як WordPress повністю завантажений, але до того, як будь-які заголовки header були відправлені.
init – це популярна подія. Зазвичай використовується плагінами для ініціалізації себе. Цей хук зручний з багатьох причин: наприклад, потрібно визначати користувача, потрібні таксономії, потрібні функції, встановлені в темі (файл functions.php або інший).
До моменту спрацювання init поточний користувач авторизований (global $current_user вже визначено) та встановлені всі основні глобальні змінні та функції WordPress. Також функції теми вже підключені та всі установки встановлені: розміри картинок мініатюр, підтримка меню тощо.
Замість 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 Обробка $_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'); }
список змін
З версії 1.5.0 | Введено. |
Де викликається хук
/wp-settings.php
Де використовується хук у WordPress
add_action( 'init', '_register_theme_block_patterns');
add_action( 'init', 'register_core_block_types_from_metadata' );
add_action( 'init', 'register_block_core_post_comments_form');
add_action( 'init', 'register_block_core_query');
add_action( 'init', 'wp_widgets_init', 1);
add_action('init', 'kses_init');
add_action( 'init', 'create_initial_post_types', 0); // Highest priority.
add_action( 'init', 'wp_sitemaps_get_server');
add_action( 'init', 'rest_api_init');
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_schedule_https_detection');
add_action('init', 'wp_cron');
add_action( 'init', array( 'WP_Block_Supports', 'init' ), 22);
add_action( 'init', 'check_theme_switched', 99);
add_action( 'init', '_register_core_block_patterns_and_categories' );
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');