Предотвратите активацию плагина и добавьте уведомление администратора

Я работаю над плагином, которому нужно создать файл CSV после его активации. Я хочу заметить пользователя, если по какой-то причине файл не может быть открыт и предотвратить активацию плагина. Вот мой код:

public static function hcg_create_csv_file(){ try { $file_name = self::FILE_NAME; $fields = self::get_csv_head_fields(); $file = fopen( HCG_ABSPATH . 'src/' . $file_name, 'w' ); if ( ! $file ) { throw new Exception(__('Failed to open CSV file, please check your directory permissions.', '')); } fputcsv( $file, $fields ); fclose( $file ); } catch (Exception $e) { $GLOBAL['hcg_activation_error_msg'] = $e->getMessage(); deactivate_plugins( basename( __FILE__ ) ); $redirect_url = add_query_arg('hcg_activation_error_msg', 1, admin_url('plugins.php')); wp_safe_redirect($redirect_url); exit; } } 

И активационный крюк («Hashavshevet_CSV_Generator» – это имя основного класса плагина »):

 register_activation_hook( HCG_PLUGIN_FILE, array('Hashavshevet_CSV_Generator', 'hcg_create_csv_file') ); 

Поскольку вы можете видеть, что я пытался сделать в этой функции в случае ошибки, это обновить страницу с помощью нового параметра url, который будет указывать на наличие ошибки, также я помещал сообщение об ошибке в глобальную переменную, поэтому я буду иметь доступ к нему из функции admin_notices() , здесь fuction подключен к admin_notices() :

 function hcg_add_admin_error_msg(){ if ( isset($_GET['hcg_activation_error_msg']) ) { global $hcg_activation_error_msg; $class = 'notice notice-error'; printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $hcg_activation_error_msg ) ); } } add_action('admin_notices', 'hcg_add_admin_error_msg'); 

Проблема в том, что плагин не активируется, эта функция не запускается, поскольку она находится (и должна быть расположена) в файле плагина.

Любая идея, как обойти это?

Заранее спасибо!!