plugins_loaded хук-подіяWP 1.5.0

Спрацьовує відразу після того, як усі активовані плагіни завантажилися.

Спрацьовує на ранньому етапі до подій: 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...
}

Приклади

0

#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
wp-settings.php 461

do_action( 'plugins_loaded');

Де використовується хук у WordPress

wp-includes/default-filters.php 353

add_action( 'plugins_loaded', '_wp_theme_json_webfonts_handler' );

wp-includes/default-filters.php 406

add_action( 'plugins_loaded', 'wp_maybe_load_widgets', 0);

wp-includes/default-filters.php 407

add_action( 'plugins_loaded', 'wp_maybe_load_embeds', 0);

wp-includes/default-filters.php 520

add_action( 'plugins_loaded', '_wp_customize_include');

wp-includes/default-filters.php 608

add_action( 'plugins_loaded', '_wp_add_additional_image_sizes', 0);

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *