• Пишу плагин, пытаюсь безрезультатно вызвать функцию activate_plugin, которая определена в installDir/wp-admin/includes/plugin.php. var_dump(function_exists(activate_plugin)) возвращает bool(false), что наводит на мысль о том, что installDir/wp-admin/includes/plugin.php не инклудится. Подскажите пожалуйста как решить проблему.

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Не нашёл такой функции. Активировать плагин можно примерно так:

    $plugin = 'akismet/akismet.php';
    include_once(WP_PLUGIN_DIR . '/' . $plugin);
    do_action("activate_$plugin");

    Однако необходимость программной активации встречается довольно редко. Как звучит задача полностью?

    Спасибо за ответ, но пока до конца не вник…

    Вы уверены относительно правильности синтаксиса последней строчки?
    do_action("activate_<strong>$plugin</strong>");

    Есть хук, который можно проинклудить и активировать плагин:

    if(!function_exists(activate_plugin))
    include_once(ABSPATH.'wp-admin/includes/plugin.php');
    
    activate_plugin(WP_PLUGIN_DIR.'/'.$pluginName);

    Однако, ваше решение видится более элегантным, единственное что мне непонятно, это синтаксис последней строки. Поясните пожалуйста.

    Полностью задача заключается в закачке обновления плагина с последующей активацией в автономном режиме.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Я ошибся — действительно, эта функция есть в wp-admin/includes/plugin.php. Значит, можно воспользоваться вашим вариантом. По поводу синтаксиса: внутри строк, заключённых в двойные кавычки, обрабатываются переменные.

    В WordPress уже есть возможность автоматического обновления плагинов одним кликом. Или тут что-то другое?

    Под синтаксисом я подразумевал синтаксис самого WordPress-а. Конечная строка ‘activate_akismet/akismet.php’ поставила меня в тупик. WordPress понимает такие директивы?

    В моём случае обновление должно происходить без клика.

    К сожалению предложенный вами вариант не работает.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Да, понимает — см. «Administrative_Actions». Оказалось, что это действие не осуществляет саму активацию, а только сопутствует ей. Извините, если ввёл в заблуждение.

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема «Функция activate_plugin не доступна» закрыта для новых ответов.