Правильный способ проверить системные требования для плагина 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
Вы можете попробовать первую ссылку. Это довольно просто. Спасибо! надеюсь, что информация будет полезна.