Правильный способ проверить системные требования для плагина WordPress

Мне любопытно, как правильно запретить пользователю активировать мой плагин, если его система не отвечает определенным требованиям. Выполнение проверок легко, и мне не нужна помощь с этим, мне более интересно, как сказать WordPress выйти и отобразить сообщение об ошибке.

В настоящее время я пробовал оба exit($error_message) а также die($error_message) в методе активации крюка. Пока отображается мое сообщение, а плагин не активирован, также отображается сообщение о фатальной ошибке (см. Изображение ниже).

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

Спасибо за любую помощь заранее.

2 ответа

Решение

Это немного недокументировано, как вы могли заметить. Вместо die(), сделай это так:

$plugin = dirname(__FILE__) . '/functions.php';
deactivate_plugins($plugin);
wp_die('<p>The <strong>X</strong> plugin requires version WordPress 2.8 or greater.</p>','Plugin Activation Error',array('response'=>200,'back_link'=>TRUE));

Строки выше wp_die() должны деактивировать этот плагин. Обратите внимание, что в этом случае мы используем functions.php, потому что там у меня есть объявление комментария к метаданным имени плагина - и если вы используете другой файл, измените код выше. Обратите внимание, что путь очень специфичен для совпадения. Итак, если вы хотите увидеть, каким обычно будет ваш путь, используйте print_r(get_option('active_plugins'));die(); чтобы избавиться от этого, чтобы вы знали, какой путь вам нужен. Так как у меня был plugin_code.php, где находился остальной код моего плагина, и поскольку он находился в том же каталоге, что и functions.php, мне просто нужно было сделать dirname(__FILE__) для правильного пути.

Обратите внимание, что конец оператора wp_die() важен, поскольку он обеспечивает обратную ссылку и предотвращает ошибку 500 (которая является кодом Apache по умолчанию для wp_die()).

Это всего лишь идея. Попробуйте проверить версию WordPress и сравните, а затем используйте php, чтобы настроить исключение / ошибку. PHP 5.0 try catch может быть хорошим способом сделать это. Вот некоторые ресурсы.

http://www.w3schools.com/php/php_exception.asp

http://php.net/manual/en/internals2.opcodes.throw.php

Вы можете попробовать первую ссылку. Это довольно просто. Спасибо! надеюсь, что информация будет полезна.

Другие вопросы по тегам