Я создаю плагин, который добавляет дополнительную функциональность к основному плагину. В идеале на экране администрирования плагинов должна быть отключена ссылка «активировать» и добавлена встроенная заметка, в которой пользователю предлагается сначала установить и активировать основной плагин, прежде чем он / она сможет использовать текущий плагин.
plugin-development
kosinix
источник
источник
if (is_plugin_active('path/to/plugin.php')) { // Do something }
Ответы:
Спасибо за ответы, ребята. Хотя оба ответа поставили меня на правильный путь, ни один из них не сработал. Итак, я делюсь своими решениями ниже.
Способ 1 - Использование register_activation_hook:
Создайте Родительский Плагин в plugins / parent-plugin / parent-plugin.php:
Создайте дочерний плагин в плагинах / child-plugin / child-plugin.php:
Обратите внимание, что я не использую, так
deactivate_plugins( $plugin );
как по какой-то причине это не работает. Поэтому я использовал wp_die для отмены перенаправления активации и информирования пользователя.Преимущество:
Недостатки:
Способ 2 - Использование admin_init и admin_notices
Создайте Родительский Плагин в plugins / parent-plugin / parent-plugin.php:
Создайте дочерний плагин в плагинах / child-plugin / child-plugin.php:
Преимущество:
Недостаток:
Что касается моего вопроса об отключении ссылки активации, я мог бы использовать:
Тем не менее, это оказалось очень непрактичным, так как нет места для размещения этого кода. Я не мог поставить его на родительский плагин, так как родительский плагин должен быть активным для запуска этого кода. Конечно, не принадлежит дочернему плагину или functions.php. Так что я отказываюсь от этой идеи.
источник
Попробуйте, это прокомментировано, так что это должно помочь вам понять это.
Если это выдает ошибку, вы также можете проверить «option» в «myplugin» и установить его в false или не активировать.
источник
Оба предложенных решения имеют недостатки.
Способ 1: Как уже упоминалось, экран wp_die () будет по-прежнему отображаться, когда родительский плагин и дочерний плагин активируются одновременно с использованием флажков на экране администрирования плагинов.
Способ 2: В некоторых случаях это не очень хорошо, так как «admin_init» выполняется после «plugins_loaded» ( https://codex.wordpress.org/Plugin_API/Action_Reference ) и после ловушки удаления ( https: // codex. wordpress.org/Function_Reference/register_uninstall_hook ). Так, например, если мы хотим, чтобы надстройка выполняла некоторый код при удалении независимо от того, активен родительский плагин или нет, этот подход НЕ будет работать.
Решение:
Прежде всего, нам нужно добавить следующий код в конец основного файла PHP родительского плагина:
Это отправит событие / сигнал всем подписчикам, сообщая, что основной плагин был загружен.
Тогда класс надстройки должен выглядеть следующим образом:
Надеюсь, это поможет :)
источник
Я думаю, что вам нужна активация плагина TGM .
источник