Функция activate_plugins()
предназначена для активации одного или нескольких плагинов в WordPress. С ее помощью можно не только включить необходимые плагины, но и задать дополнительные параметры активации, такие как активация для сети сайтов (Multisite), настройка перенаправления и выбор «тихой» активации (без выполнения хуков).
activate_plugins( string|string[] $plugins, string $redirect = '', bool $network_wide = false, bool $silent = false ): true|WP_Error
Функция возвращает true
при успешной активации плагинов или объект WP_Error
в случае ошибки, связанной с некорректным путем к файлу плагина.
Параметры
$plugins
(строка | массив, обязательный): Указывает один плагин или массив плагинов для активации. Формат — путь к файлу плагина относительно директорииwp-content/plugins
, например,example-plugin/example.php
.$redirect
(строка, необязательный): URL, на который пользователь будет перенаправлен после успешной активации плагинов.
По умолчанию:''
.$network_wide
(логический, необязательный): Определяет, следует ли активировать плагин для всех сайтов в сети. Используется в Multisite-установках. По умолчанию:false
.$silent
(логический, необязательный): Опция для «тихой» активации плагинов. Если установлено вtrue
, хуки активации (такие какactivate_*
) не будут вызваны. По умолчанию:false
.
Возвращаемое значение
true|WP_Error
—true
, если плагины успешно активированы. В случае ошибки возвращается объектWP_Error
.
Пример 1: Активация одного плагина
Для активации одного конкретного плагина, например, example-plugin/example.php
, используется следующий код:
// Подключаем файл с функцией activate_plugins(), если это не админ-панель
if ( ! function_exists( 'activate_plugins' ) ) {
require_once ABSPATH . '/wp-admin/includes/plugin.php';
}
$result = activate_plugins( 'example-plugin/example.php' );
if ( is_wp_error( $result ) ) {
echo 'Ошибка активации плагина: ' . $result->get_error_message();
} else {
echo 'Плагин успешно активирован!';
}
Пример 2: Активация нескольких плагинов
Можно передать массив плагинов для активации сразу нескольких плагинов:
$plugins_to_activate = [
'seo-plugin/seo.php',
'contact-form/contact-form.php',
];
$result = activate_plugins( $plugins_to_activate );
if ( is_wp_error( $result ) ) {
echo 'Произошла ошибка при активации одного из плагинов: ' . $result->get_error_message();
} else {
echo 'Все плагины успешно активированы!';
}
Пример 3: Активация плагина для сети сайтов
Для мультисайтовой установки WordPress можно активировать плагин для всех сайтов в сети, установив параметр $network_wide
в true
:
$plugin_path = 'multisite-plugin/multisite.php';
$result = activate_plugins( $plugin_path, '', true );
if ( is_wp_error( $result ) ) {
echo 'Ошибка при активации плагина для сети: ' . $result->get_error_message();
} else {
echo 'Плагин успешно активирован для всей сети сайтов!';
}
Пример 4: «Тихая» активация плагина без вызова хуков
Иногда бывает полезно активировать плагин без выполнения хуков активации. Это можно сделать, установив параметр $silent
в true
:
$plugin_path = 'silent-plugin/silent.php';
$result = activate_plugins( $plugin_path, '', false, true );
if ( is_wp_error( $result ) ) {
echo 'Ошибка активации плагина: ' . $result->get_error_message();
} else {
echo 'Плагин успешно активирован в тихом режиме!';
}
Когда использовать activate_plugins()
- Для программной активации одного или нескольких плагинов на сайте.
- В случаях, когда нужно контролировать процесс активации через код — например, для управления активацией на нескольких сайтах сети или исключения хуков активации.
- При разработке пользовательских решений, которые требуют активации плагинов, если определенные условия соблюдены.
Заключение
Функция activate_plugins()
предлагает мощный и гибкий способ программной активации плагинов. В зависимости от целей проекта, можно задать нужные параметры, активировать плагины на нескольких сайтах, настроить перенаправление или использовать «тихий» режим для деактивации хуков.