WordPress как на ладони
wordpress jino

plugins_loaded хук-событие . WP 1.5.2

Срабатывает сразу после того, как все активированные плагины загрузились.

Срабатывает на раннем этапе, до событий: setup_theme, after_setup_theme, init, wp_loaded.

Обычно используется для инициализации основного кода плагина. Для того, чтобы код вашего плагина срабатывал после загрузки pluggeble функций WordPress и других плагинов, которые в свою очередь могут изменять некоторые функции WordPress.

Использование

add_action( 'plugins_loaded', '____action_function_name' );
function ____action_function_name() {
	// Действие...
}

Примеры

#1 Инициализация плагина

Допустим, в плагине нужно получить текущего пользователя и что-то с ним делать. Для этого есть функция wp_get_current_user(). Но если использовать её прямо в файле плагина без хуков, она работать не будет. Потому что она подключается после подключения всех активных плагинов, и нашего в том числе. Т.е. если использовать wp_get_current_user() прямо в файле плагина, функция будет вызвана до того как определена, что вызовет критическую ошибку PHP типа: "вызвана несуществующая функция".

Для этого и подобных случаев, нужно событие plugins_loaded. Короткий пример:

<?php
/*
Plugin Name: Название плагина
Plugin URI: http://страница_с_описанием_плагина_и_его_обновлений
Description: Краткое описание плагина.
Version: Номер версии плагина, например: 1.0
Author: Имя автора плагина
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{
		// делаем что-то для остальных ролей
	}

}

Связи хука

Используется в файле: wp-settings.php

Остальные хуки из файла: wp-settings.php:

Фрагменты кода хука plugins_loaded

Фрагмент из: wp-settings.php WP 4.9
...

// Set internal encoding.
wp_set_internal_encoding();

// Run wp_cache_postload() if object cache is enabled and the function exists.
if ( WP_CACHE && function_exists( 'wp_cache_postload' ) )
	wp_cache_postload();

/**
 * Fires once activated plugins have loaded.
 *
 * Pluggable functions are also available at this point in the loading order.
 *
 * @since 1.5.0
 */
do_action( 'plugins_loaded' );

// Define constants which affect functionality if not already defined.
wp_functionality_constants();

// Add magic quotes and set up $_REQUEST ( $_GET + $_POST )
wp_magic_quotes();

/**
 * Fires when comment cookies are sanitized.
 *
 * @since 2.0.11
 */
do_action( 'sanitize_comment_cookies' );

/**
...
plugins_loaded Комментариев нет

Здравствуйте, !

Ваш комментарий