Title: Call to undefined function deactivate_plugins()
Last modified: 14.10.2020

---

# Call to undefined function deactivate_plugins()

 *  Решено [icopydoc](https://ru.wordpress.org/support/users/icopydoc/)
 * (@icopydoc)
 * [5 лет, 7 месяцев назад](https://ru.wordpress.org/support/topic/call-to-undefined-function-deactivate_plugins/)
 * У меня есть два плагина. Один зависит от другого. Потому хочу сделать так, что
   если юзер деактивирует один плагин — деактивировался бы и другой.
    Трабла такая
   Fatal error: Uncaught Error: Call to undefined function deactivate_plugins()
 * Код:
 *     ```
       register_activation_hook(__FILE__, array('ZZZ', 'on_activation'));
       register_deactivation_hook(__FILE__, array('ZZZ', 'on_deactivation'));
       register_uninstall_hook(__FILE__, array('ZZZ', 'on_uninstall'));
       add_action('plugins_loaded', array('ZZZ', 'init'), 15);
       class ZZZ {
        protected static $instance;
        public static function init() {
       	is_null( self::$instance ) AND self::$instance = new self;
       	return self::$instance;
        }
   
        public function __construct() {
        if (!class_exists('YYY')) {
       	deactivate_plugins(plugin_basename( __FILE__ ));
       ...
       }
       }
       ```
   
 * Вот собственно строка deactivate_plugins(plugin_basename( __FILE__ )); и вызывает
   ошибку Fatal error: Uncaught Error: Call to undefined function deactivate_plugins()
 * Как так? Это же впшная функция блин. Где я ошибся?)

Просмотр 8 ответов — с 1 по 8 (всего 8)

 *  [Vova Druzhaev](https://ru.wordpress.org/support/users/otshelnik-fm/)
 * (@otshelnik-fm)
 * [5 лет, 7 месяцев назад](https://ru.wordpress.org/support/topic/call-to-undefined-function-deactivate_plugins/#post-12197597)
 * [https://wp-kama.ru/function/deactivate_plugins](https://wp-kama.ru/function/deactivate_plugins)
 * > Работает в админ-панели, если нужно во фронте, то подключите файл:
 * а я обычно пишу человечно после активации плагина — «Для работы нужно активировать
   такой-то плагин». И на странице настройки плагина также. А сами настройки не 
   вывожу. Тогда юзер не будет думать «да что за фигня какая-то не активируется.
   Глюкавое *вно!».
    — Это более честно к пользователю и наглядно. UX
 * А так как вы: выкинет он плагин и к вашим продуктам сроду не будет возвращаться
 *  [kword](https://ru.wordpress.org/support/users/kw56/)
 * (@kw56)
 * [5 лет, 7 месяцев назад](https://ru.wordpress.org/support/topic/call-to-undefined-function-deactivate_plugins/#post-12197605)
 * > «Для работы нужно активировать такой-то плагин»
 * Вопрос-то про деактивацию.
    Недавно клиент деактивировал бесплатный плагин ТСа,
   а премиальный оставил активным. А они связаны. Сайт лег, белый экран, админка
   недоступна. Я по ftp восстанавливала.
 *  Автор [icopydoc](https://ru.wordpress.org/support/users/icopydoc/)
 * (@icopydoc)
 * [5 лет, 7 месяцев назад](https://ru.wordpress.org/support/topic/call-to-undefined-function-deactivate_plugins/#post-12197606)
 * Вот-вот. [@kw56](https://ru.wordpress.org/support/users/kw56/) всё верно подметила.
   Вопрос про деактивацию и ситуацию, что она описала. С активацией вообще проблем
   нет. Там на
    register_activation_hook(__FILE__, array(‘ZZZ’, ‘on_activation’));
   проверку засунуть и всё.
 * В целом, я вроде-бы нашел промежутночный вариант.
    Внутри __construct():
 *     ```
       public function __construct() {
       ....
       if (!class_exists('YYY)) {
       	add_action( 'admin_init', 'action_deactivate_plugins' );
       	function action_deactivate_plugins(){
       		deactivate_plugins(plugin_basename( __FILE__ ));
       		wp_die(
       			__('123', 'yfymae'),
       			__(123', 'yfymae'),
       			array('back_link' => true)
       		);		
       	}	
       	return;
       }
       ...
       ```
   
 * сейчас тестирую. Но если есть какие-то другие идеи — обязательно рассмотрю…
    -  Ответ изменён 5 лет, 7 месяцев назад пользователем [icopydoc](https://ru.wordpress.org/support/users/icopydoc/).
 *  [Vova Druzhaev](https://ru.wordpress.org/support/users/otshelnik-fm/)
 * (@otshelnik-fm)
 * [5 лет, 7 месяцев назад](https://ru.wordpress.org/support/topic/call-to-undefined-function-deactivate_plugins/#post-12197705)
 * > Сайт лег
 * 🙂 ой кодеры. А что вам мешает в основном файле «зависимого» проверить наличие
   нужного плагина по константе, по наличию функции или класса и уже по успеху подключить
   файл или класс?
 * >  Я по ftp восстанавливала
 * kword — ты девчонка?
 *  Модератор [Sergey Biryukov](https://ru.wordpress.org/support/users/sergeybiryukov/)
 * (@sergeybiryukov)
 * Live and Learn
 * [5 лет, 7 месяцев назад](https://ru.wordpress.org/support/topic/call-to-undefined-function-deactivate_plugins/#post-12197788)
 * > Как так? Это же впшная функция блин. Где я ошибся?)
 * Функция объявлена в файле [wp-admin/includes/plugin.php](https://core.trac.wordpress.org/browser/tags/5.5.1/src/wp-admin/includes/plugin.php#L739)
   и доступна только в админке, а действие `plugins_loaded` выполняется и на внешней
   части сайта.
 * Нужно либо добавить проверку на существование функции, либо подключить файл. 
   Вариант с `admin_init` тоже подойдёт.
 *  Автор [icopydoc](https://ru.wordpress.org/support/users/icopydoc/)
 * (@icopydoc)
 * [5 лет, 7 месяцев назад](https://ru.wordpress.org/support/topic/call-to-undefined-function-deactivate_plugins/#post-12197836)
 * Спасибо всем. В общем сделал через admin_init.
 *  [kword](https://ru.wordpress.org/support/users/kw56/)
 * (@kw56)
 * [5 лет, 2 месяца назад](https://ru.wordpress.org/support/topic/call-to-undefined-function-deactivate_plugins/#post-12209558)
 * [@icopydoc](https://ru.wordpress.org/support/users/icopydoc/),
 * Ситуация повторилась. При активном премиальном плагине обновление бесплатного
   вызывает фатальную ошибку и роняет сайт. Если нужны логи, могу прислать
 *  Автор [icopydoc](https://ru.wordpress.org/support/users/icopydoc/)
 * (@icopydoc)
 * [5 лет, 2 месяца назад](https://ru.wordpress.org/support/topic/call-to-undefined-function-deactivate_plugins/#post-12209602)
 * А версия про-плагина свежая?
    Вообще напишите мне пожалуйста на [support@icopydoc.ru](https://ru.wordpress.org/support/topic/call-to-undefined-function-deactivate_plugins/support@icopydoc.ru?output_format=md)
   И пришлите скрины всех установленных про-плагинов. И версию базового. И логи.
   Спасибо. Ибо жалоб подобных не было с тех пор, как я переделал согласно советам
   в этом топике.

Просмотр 8 ответов — с 1 по 8 (всего 8)

Тема «Call to undefined function deactivate_plugins()» закрыта для новых ответов.

 * Форум: [Проблемы и решения](https://ru.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 8 ответов
 * 5 участников
 * Последний ответ: [icopydoc](https://ru.wordpress.org/support/users/icopydoc/)
 * Последняя активность: [5 лет, 2 месяца назад](https://ru.wordpress.org/support/topic/call-to-undefined-function-deactivate_plugins/#post-12209602)
 * Статус: решённая

## Темы

### Самые популярные темы

### Темы без ответов

### Без вопроса

### Решённые

### Нерешённые

### Все темы
