Есть ли способ определить, установлен ли плагин WordPress? - PullRequest
7 голосов
/ 12 октября 2011

Мне нравится знать, есть ли способ узнать, установлен ли плагин.Мне все равно, если это активировано, но только если этот плагин установлен!

Знаете ли вы какой-нибудь хороший способ сделать это?

Я должен быть более конкретным.Я знаю, где найти плагины, и я знаю, как я могу увидеть, если они установлены.Вопрос в том, есть ли какой-либо программный способ проверить, установлен ли плагин.

, т. Е. WordPress предоставляет нам register_activation_hook (), чтобы выполнить любую операцию, которая нам нравится, при активации плагина, но нет никаких соответствующихкрючок для установки плагина.Есть ли способ определить установку плагина?

Ответы [ 2 ]

11 голосов
/ 18 декабря 2012

Вот лучший способ, который я нашел до сих пор: (это было написано в WP 3.5)

Информация:

Главное, что нужно учитывать при использовании register_activation_hook, это то, чтовызывается как страница-посредник между нажатием на ссылку активации из wp-admin / plugins.php и просмотром уведомления «Активирован плагином» после того, как оно было подключено. Я обнаружил это после того, как попытался использовать переменную $_GET, отправленную из Activateссылка на сайт.Если вы внимательно посмотрите на ссылку, которую вы нажимаете, и ссылка, в которой вы оказались, немного отличаются.Вот почему вы не можете использовать add_action(), do_action() or add_filter(), .. в триггерах register_activation_hook().Он мгновенно перенаправляет, как только плагин был активирован.

Решение:

Однако вы можете использовать add_option во время перехвата, например, так:

/* Main Plugin File */
...
register_activation_hook( __FILE__, function() {
  add_option('Activated_Plugin','Plugin-Slug');
  /* activation code here */
});

add_action('admin_init','load_plugin');
function load_plugin() {
    if(is_admin()&&get_option('Activated_Plugin')=='Plugin-Slug') {
     delete_option('Activated_Plugin');
     /* do some stuff once right after activation */
    }
}

Это должно помочь вам начать ...

2 голосов
/ 05 июля 2012

Есть несколько способов проверить, что я могу придумать:

  • Проверить, что папка плагина существует
  • Проверить, что определен хук или фильтр
  • Проверьте, определен ли define () - дождитесь, пока для этого запускается ловушка plugins_loaded
  • Проверьте поле параметров для связанных значений, установленных плагином
  • Убедитесь, что класс был определен
...