Главная Новости

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


Опубликовано: 01.09.2018

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

Срабатывает на раннем этапе, до событий: 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

... // 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' ); /** ...
rss