


Блог IT-шника
Блог IT-шника
Привіт:) У цьому пості покажу як перевірити чи активний WordPress-плагін. Така перевірка стане у нагоді, якщо, наприклад, потрібно під'єднатися до хуку якогось плагіну, і виконати певні дії, якщо останній активовано в адмін-панелі.
Чи у даний момент плагін активовано можна перевірити наступним кодом у файлі functions.php:
/**
* Спосіб 1. Перевірка чи активний вказаний плагін
*/
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if ( ! is_plugin_active( 'updraftplus/updraftplus.php' ) ) {
// Plugin is NOT active
return;
} else {
// Plugin is active
}
У коді значення updraftplus/updraftplus.php
відповідає за конкретний плагін (UpdraftPlus), активність якого потрібно перевірити. Тут updraftplus
— папка плагіну у каталозі /wp-content/plugins/, а updraftplus.php
— основний файл плагіну.
Перевірити цей код можна на прикладі виведення відповідного повідомлення у шапці сайту: якщо конкретний плагін активний або ж ні:
/**
* Спосіб 1. Перевірка чи активний вказаний плагін
*/
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if ( ! is_plugin_active( 'updraftplus/updraftplus.php' ) ) {
add_action( 'wp_head', function() {
echo 'Plugin is NOT active';
});
// Plugin is NOT active
return;
} else {
// Plugin is active
add_action( 'wp_head', function() {
echo 'Plugin is active';
});
}
Є ще один варіант перевірки чи активний плагін — перевірка існування його основного PHP-класу.
Наприклад, щоб перевірити чи активований модуль WooCommerce, використовуйте код
/**
* Спосіб 2. Перевірка чи активний вказаний плагін
*/
if ( ! class_exists( 'woocommerce' ) ) {
exit;
}
Цієї перевірки буде достатньо, щоб весь ваш код нижче не виконувався, якщо система не знайде діючого плагіну WooCommerce. Для інших WordPress-розширень потрібно самостійно визначати головний клас, на основі якого працює весь функціонал плагіну.
Є ще один спосіб:
/**
* Спосіб 3. Перевірка чи активний вказаний плагін
*/
if ( in_array( 'updraftplus/updraftplus.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
// Plugin is active
}