У меня есть плагин, который я не хочу активировать, если он не соответствует определенному номеру версии WP, а затем показать сообщение об ошибке в ловушке действия admin_notices. Насколько я исследовал, приведенный ниже код является лучшим, что я могу достичь этой цели:
$wp_version = get_bloginfo('version');
if ( $wp_version < 4.5 ) {
add_action( 'admin_init', 'deactivate_plugin_now' );
add_action( 'admin_notices', 'errormsg' ) );
}
public function deactivate_plugin_now() {
if ( is_plugin_active('myplugin/myplugin.php') ) {
deactivate_plugins('myplugin/myplugin.php');
}
}
public function errormsg () {
$class = 'notice notice-error';
$message = __( 'Error you did not meet the WP minimum version', 'text-domain' );
printf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message );
}
Но я думаю, что я все еще делаю это неправильно, потому что я получаю сообщение об активированном плагине в то же время с уведомлением об ошибке, которое я назначил.
Какими будут правильные действия / фильтр для правильной остановки процесса активации плагина, чтобы я получал только сообщение об ошибке?
plugins
plugin-development
Карл Альберто
источник
источник
Ответы:
Я могу опоздать на эту вечеринку, но чтобы остановить активацию плагина и заставить WordPress показывать сообщение об ошибке, куда отправляются уведомления администратора, я просто выводлю сообщение об ошибке и прекращаю выполнение. Это имеет дополнительное преимущество хорошей игры с wp-cli :
Пример:
источник
По сути, вы не можете делать это так, как вы хотите. Все WordPress формы перенаправляются после завершения их процесса и не генерируют вывод самостоятельно, и поэтому сообщение об ошибке генерируется при запросе другой страницы. Если ваш плагин не будет активным в этот момент, сообщение не будет отображаться. Еще одним осложнением является то, что плагины могут быть активированы Ajax.
Уродливый, но работающий способ состоит в том, чтобы не активировать активацию, генерируя ошибку php, или IIRC любой вывод сделает, так что вы можете просто вывести что-то вроде «несоответствия версий» в хуке активации плагина, который будет отображаться в окне вывода ошибок, которое отображается при сбое активации.
О чем стоит подумать: люди могут включить ваши файлы плагинов или принудительно активировать их, обходя пользовательский интерфейс, или используя wp-cli. в зависимости от причин, по которым вы хотите отменить активацию, просто иметь сообщение об ошибке может быть лучше, чем попытка сбить активацию
источник
Поскольку вы обновили заголовок, мне нужно предоставить другой ответ, предыдущий, пожалуйста, не игнорируйте, потому что он еще проще, чем этот.
Обратите внимание, что при попытке активировать плагин вы взаимодействуете с файлом plugins.php. Там у вас есть большой переключатель действий, которые вы можете запустить.
И в случае, если у вас установлена ошибка
$_GET['error']
в тот момент, когда у вас есть только предопределенные сообщения об ошибках - вы не можете создать свое собственное сообщение. Вот почему я предложил вам такое решение.Можно предложить пользовательские сообщения в качестве уведомлений администратора ядру WordPress в случае, если плагины не соответствуют некоторым требованиям.
источник
admin_notices
не запускается.Как насчет этого кода для подавления hello.php (Hello Dolly), если WP <8.5:
Я думаю, что это хорошо, потому что это не заставляет вас создавать уведомления администратора. Вы просто получите отзыв о причине прерывания установки плагина.
Я добавил этот код для HelloDolly, но вам нужно будет настроить.
источник