• Как не дать активироваться своему плагину, если не активен другой?

    Гугляться только вывод сообщений типа

    
    if (! is_plugin_active( 'plugin-directory/plugin-file.php' ) ) {
    	echo 'Плагин не активирован'
    }

    С проверкой понятно, а как запретить активацию своего не могу найти.
    Думаю, что надо как-то с init решать но никак не соображу как.

    Помогите разобраться.

    PS. Называл топик «Не активировать плагин если не активен другой», Но ошибка — «Заданное вами название слишком длинное». Это же никак не разрешённые 80 символов.

Просмотр 15 ответов — с 1 по 15 (всего 19)
  • А почему бы и не дать активировать — только на странице настроек (или через admin notice) выводить не опции, а мессадж — «Этот плаг зависит от плагина **name** — активируйте его»

    А почему бы и не дать активировать

    Он не только бесполезен без родительского, но и будет вызывать ошибку, тк задействуются его функции.
    Родительский — это https://wordpress.org/plugins/meta-box/

    только на странице настроек

    Нет в нём никаких настроек.

    is_plugin_active сойдет?

    Он-то и сойдет (он и в вопросе написан). Но только для проверки и вывода сообщения. А как не дать активироваться своему — я этого и не пойму.

    Как-то так:

    register_activation_hook( __FILE__, function() {
    	if ( ! is_plugin_active( 'foo.php' ) ) {
    		die('Необходим плагин Foo.');
    	} 
    });
    

    Он не только бесполезен без родительского, но и будет вызывать ошибку, тк задействуются его функции.

    Проверяешь — есть ли функция/класс из основного плагина
    — есть: инклюдишь файл лоадер всего плагина;
    — нет: выбрасываешь сообщение что нужен основной плагин;
    И никаких ошибок не будет.
    Посмотри как дополнительные плагины для вуки устроены — там есть проверка и на наличие вукоммерца (класса) и на его версию. Делай грамотно.

    Это более верный путь для пользователей, нежели просто тихая подстава с отсутствием кнопки «активировать». Это приведет к тому что все удалят твой бесполезный плаг и разойдутся.

    Юрий — с die — это жестко как-то. Разве имеет плагин право выкидывать из админки на белый экран смерти ради такой мелочи?
    Админ нотисы используют большинство

    Разве имеет плагин право выкидывать из админки на белый экран смерти ради такой мелочи?

    Никто никого никуда не выкидывает.

    screenshot

    Никто никого никуда не выкидывает.

    Вот я как раз сегодня проверил Ваше предложение и зашел отписать.
    Вызывать фатальную ошибку — ну это как-то неправильно всё же.

    Проверяешь — есть ли функция/класс из основного плагина

    Да не важно что поверять. is_plugin_active проверяет файл родителя — ничем не хуже. С проверкой проблем нет. Мне не понятно как не дать включиться своему.

    — есть: инклюдишь файл лоадер всего плагина;

    Какой лоадер?

    Это более верный путь для пользователей, нежели просто тихая подстава с отсутствием кнопки «активировать».

    Где про такой бред я писал?

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Мне не понятно как не дать включиться своему.

    Деактивировать его обратно.

    Какой лоадер?

    php лоадер (может класс) — который при успехе подгрузит нужные файлы для работы.

    Или вы все в основном файле плагина делаете? Зачем?

    Вы смотрели как допы к вуке делают свои проверки?

    Где про такой бред я писал?

    Вот же:

    Как не дать активироваться своему плагину, если не активен другой?

    — ни слова про сообщение. Просто «не дать активироваться».

    — он подумает — «вот глючный». И удалит плагин ))

    Я вам про лучшие практики… и всё зря

    Никто никого никуда не выкидывает.

    — но не элегантно же…

    Деактивировать его обратно.

    Я не понял.

    Или вы все в основном файле плагина делаете? Зачем?

    В 2х. В главном регистрация кастомных типов и таксономий, в дополнительном — метакбоксы к ним. Хотя можно было и всё в одном. Зачем усложнять.

    Вы смотрели как допы к вуке делают свои проверки?

    Я смотрел в куче плагинов и для вуу и для cf7 ещё до создания топика. Но там всё намудрено. Если бы нашел понятный способ не спрашивал бы.

    Вот же:

    Я даже не представляю как из слов «не дать активироваться своему плагину» можно было сложить «тихая подстава с отсутствием кнопки «активировать».».

    ни слова про сообщение.

    А это тогда что?:

    только вывод сообщений типа

    и 2й раз

    Но только для проверки и вывода сообщения

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Я не понял.

    Код смотрели, ссылку на который я Вам дал?

    Код смотрели, ссылку на который я Вам дал?

    Ну конечно. Не понял толком ни код ни как его использовать.

Просмотр 15 ответов — с 1 по 15 (всего 19)
  • Тема «Не активировать плагин» закрыта для новых ответов.