plugins_loaded
Спрацьовує відразу після того, як усі активовані плагіни завантажилися.
Спрацьовує на ранньому етапі до подій: setup_theme , init , wp_loaded .
Зазвичай використовується ініціалізації основного коду плагіна. Для того, щоб код вашого плагіна спрацьовував після завантаження pluggable функцій WordPress та інших плагінів, які можуть змінювати деякі функції WordPress.
Нові хуки у WP 5.1
У WordPress є хуки: plugins_loaded , network_plugins_loaded і mu_plugins_loaded , але вони запускаються тільки після завантаження всіх плагінів і немає простого способу виконати довільний код між кожним завантажуваним плагіном або тільки після завантаження плагіна X. Це ускладнює монітор.
У WordPress 5.1 з’явилися хуки, які спрацьовуватимуть після завантаження кожного плагіна. Кожен Хук передаватиме шлях до основного файлу плагіна.
ВАЖЛИВО! Не можна замінити хук plugins_loaded хуком plugin_loaded – це різні речі!
Використання
add_action( 'plugins_loaded', 'wp_kama_plugins_loaded_action' ); /** * Function for `plugins_loaded` action-hook. * * @return void */ function wp_kama_plugins_loaded_action(){ // action... }
Приклади
#1 Ініціалізація плагіна
Допустимо, у плагіні потрібно отримати поточного користувача і щось з ним робити. Для цього є функція wp_get_current_user() . Але якщо використовувати її прямо у файлі плагіна без хуків, вона не працюватиме. Тому що вона підключається після підключення всіх активних плагінів і нашого в тому числі. Тобто. якщо використовувати wp_get_current_user() прямо у файлі плагіна, функція буде викликана до того, як визначено, що викличе критичну помилку PHP типу: “викликана неіснуюча функція”.
Для цього і подібних випадків потрібна подія plugins_loaded
. Короткий приклад:
<?php /* Plugin Name: Назва плагіна Plugin URI: http://сторінка_з_описом_плагіна_і_його_оновлень Description: Короткий опис плагіна. Version: Номер версії плагіна, наприклад: 1.0 Автор: Ім'я автора плагіна Author URI: http://сторінка_автора_плагіна */ // будь-які дії не пов'язані з основною роботою плагіна // Наприклад, встановлення назв таблиць плагіна в глобальну $wpdb Global $wpdb; $wpdb->mytable = $wpdb->prefix .'mytable'; // або підключення файлів require_once plugin_dir_path( __FILE__ ) .'/upgrade.php'; // а тепер переходимо до роботи плагіна, // Підключивши весь його основний код під час події plugins_loaded add_action( 'plugins_loaded', 'my_plugin_init'); function my_plugin_init() { $cuser = wp_get_current_user(); // якщо користувач за участю 'newrole' if( in_array( 'newrole', (array) $cuser->roles ) ){ // робимо щось для цієї ролі } else { // робимо щось для інших ролей } }
список змін
З версії 1.5.0 | Введено. |
Де викликається хук
/wp-settings.php
do_action( 'plugins_loaded');
Де використовується хук у WordPress
add_action( 'plugins_loaded', '_wp_theme_json_webfonts_handler' );
add_action( 'plugins_loaded', 'wp_maybe_load_widgets', 0);
add_action( 'plugins_loaded', 'wp_maybe_load_embeds', 0);
add_action( 'plugins_loaded', '_wp_customize_include');
add_action( 'plugins_loaded', '_wp_add_additional_image_sizes', 0);