Intereting Posts
WP 4.4. реагирующие нагрузки нормального изображения после загрузки чувствительного изображения Почему полностью нормальный цикл дает ошибки смещения и ошибки максимального времени выполнения? Использовать PHP-код в коротком коде ОШИБКА: файлы cookie заблокированы из-за неожиданного вывода – нет доступа к FTP Как показать настраиваемую активность для пользовательских типов сообщений в цикле активности buddypress? WordPress фильтрует кепки в wp_title? (UpperCase изменен на верхний регистр) Получить название категории за пределами цикла в category.php Управление ресурсом через REST API Как снова включить панель администратора с активным аккаунтом Buddypress? (BP bar удален) Не удается получить доступ к отдельной персонализированной однотипной или архивной странице posttype WP CLI Shell не работает в Windows Нужно ли мне поле nonce для каждого мета-поля, которое я добавляю к своему настраиваемому администратору типа сообщения? Как получить список всех возможных размеров эскизов, установленных в теме Показать различные настройки пользовательских настроек на странице-шаблоны Как импортировать класс в приватный плагин?

Объявить зависимость плагина

Я написал собственный плагин, который использует определенный сторонний код плагина, поэтому я хочу объявить, что мой плагин зависит от этого стороннего плагина, возможно ли это? Каким будет нормальный подход к этой проблеме?

Это невозможно в ядре. Есть несколько способов приблизиться к этому.

1. plugins_loaded в plugins_loaded чек, чтобы увидеть, существует ли X из вашего плагина зависимостей.

 add_action('plugins_loaded', 'wpse120377_load'); function wpse120377_load() { if (!class_exists('Some_Class_From_Another_Plugin')) { // dependency not installed, bail return; } // load the rest of your plugin stuff here } 

plugins_loaded к plugins_loaded : каждый plugins_loaded плагин будет загружен этой точкой. Только в (или после) плагинах загружаются огни, которые вы можете выполнить точную проверку зависимости.

2. Посмотрите, поддерживает ли плагины крюки

Возьмите сообщения 2 сообщения . Он обеспечивает крючок, называемый p2p_init который запускается при его загрузке. Если ваш плагин зависимостей делает что-то подобное, вам не нужно подключаться к plugins_loaded и делать чек. Просто подключитесь к действию init плагинов (или что-то еще) и загрузите свою функциональность оттуда.

 add_action('p2p_init', 'wpse120377_load2'); function wpse120377_load2() { // load your plugin } 

3. Путь «Ницца к пользователю»

Если ваша зависимость не существует, ваш плагин не может функционировать. Поэтому будьте добры к пользователю и покажите сообщение об ошибке. admin_notices – хороший крючок для этого.

 add_action('plugins_loaded', 'wpse120377_load3'); function wpse120377_load3() { if (!class_exists('Some_Class_From_Another_Plugin')) { // dependency not installed, show an error and bail add_action('admin_notices', 'wpse120377_error'); return; } // load the rest of your plugin stuff here } function wpse120377_error() { ?> <div class="error"> <p> <?php _e('{PLUGIN NAME} requires {ANOTHER PLUGIN}. Please install it.', 'wpse'); ?> </p> </div> <?php }