WordPress как на ладони
WordPress темы и плагины за 250 рублей wordpress jino

is_plugin_active() WP 2.5.0

Проверяет, активен ли указанный плагин. Работает только в админ-панели. Условный тег.

Функция находится в файле wp-admin/includes/plugin.php, а значит работает исключительно в админ-панели. Использовать функцию следует во время события admin_init или позже.

Если нужно использовать функцию в шаблоне (во фронт-энде), то перед использованием функции нужно подключить файл wp-admin/includes/plugin.php, иначе получим ошибку "Call to undefined function...":

require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
// проверяем активность интересующего плагина
if( is_plugin_active( 'plugin-directory/plugin-file.php' ) ){
	echo 'Плагин активен';
}
✈ 1 раз = 0.000043с = очень быстро | 50000 раз = 0.63с = очень быстро PHP 7.0.14, WP 4.7

Хуков нет.

Возвращает

Логическое: true, если плагин активен и false, если не активен.

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

// require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); // для фронт-энда
if ( is_plugin_active( $plugin ) ){
	// Плагин активен
}
$plugin(строка) (обязательный)
Название плагина в формате: "папка_плагина/имя_файла.php".
По умолчанию: нет

Примеры

#1 Проверка активности плагина в админ-панели

/**
 * Проверка активности плагина на странице плагинов.
 */
if ( is_plugin_active( 'plugin-directory/plugin-file.php' ) ) {
	echo 'Плагин активен';
}
else {
	echo 'Плагин не активен';
}

#2 Проверка активности плагина вне админ-панели: в теме

/**
 * Проверка активности плагина не на странице плагинов.
 */
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if ( is_plugin_active( 'plugin-directory/plugin-file.php' ) ) {
	echo 'Плагин активен'
}

Код is plugin active: wp-admin/includes/plugin.php VER 4.9.6

<?php
function is_plugin_active( $plugin ) {
	return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || is_plugin_active_for_network( $plugin );
}

Cвязанные функции

Из метки: plugin (плагин)

Еще из метки: Условные теги (все)

Еще из раздела: Плагины, хуки

petrozavodsky 750alkoweb.ru
Делаю веб руками.
3 коммента
  • campusboy2801 cайт: www.youtube.com/c/wpplus

    Странная штука эта, что приходится plugin.php подключать. Вставил в functions.php без этого подключения и получил ошибку, жара! laugh Надеюсь, если буду использовать когда-то в плагинах, то такого не будет, не люблю подключать файлы движка лишний раз (это ведь ведет у увеличению потребления ОЗУ?).

    Ответить2.2 года назад #
  • llgruff46 cайт: vygodno.me

    Если файл не подключен, то при выполнении PHP выдаст ошибку "Call to undefined function..."

    Удобно использовать такую функцию:

    /**
     * Проверяем активен ли требуемый плагин на отдельном сайте или в Multisite.
     * @param $plugin
     * @return bool
     */
    function main_is_plugin_active( $plugin ) {
    	$network_active = false;
    	if ( is_multisite() ) {
    		$plugins = get_site_option( 'active_sitewide_plugins' );
    		if ( isset( $plugins[$plugin] ) ) {
    			$network_active = true;
    		}
    	}
    	return in_array( $plugin, get_option( 'active_plugins' ) ) || $network_active;
    }

    совмещая с проверкой существования:
    класса class_exists( 'WooCommerce' )
    или функции function_exists( 'sharing_display' )
    или константы defined( 'CMB2_LOADED' )

    Пример. Проверим готов ли плагин CMB2:

    if ( main_is_plugin_active( 'cmb2/init.php' ) || defined( 'CMB2_LOADED' ) ) {
    	// плагин активен, подключим файл с функциями
    	require_once get_template_directory() . '/functions/cmb2.php';
    } elseif ( is_admin() && current_user_can('manage_options') ) {
    	// плагин не активен, покажем админу уведомление
    	add_action( 'admin_notices', function(){
    		echo '<div id="message" class="error notice is-dismissible"><p>Плагин CMB2 <b>не активен!</b></p></div>';
    	} );
    }

    Подробно на github How to detect if a WordPress plugin is active

    3
    Ответить1.4 год назад #
  • campusboy2801 cайт: www.youtube.com/c/wpplus

    В одном из плагинов видел такую проверку:

    if(in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))){
    	// делаем что-либо
    }
    1
    Ответить1.2 год назад #
Здравствуйте, !     Войти . Зарегистрироваться