init(); } /** * Initialize the plugin */ public function init() { // Hook into WordPress init add_action('init', [$this, 'on_init']); add_action('wp_loaded', array($this, 'on_wp_loaded')); } public function run($actions) { foreach ($actions as $action) { $this->{$action}(); } } public function on_init() { $actions = []; $this->run($actions); } public function on_wp_loaded() { $this->setup_filters(); $this->setup_actions(); } public function setup_filters() { $filters = [ 'login_error_mask', ]; $this->run($filters); } public function setup_actions() { $actions = [ 'mitigation_remove_footer_shake', 'remove_wp_generator', ]; $this->run($actions); } public function login_error_mask() { add_filter('login_errors', function($error) { return 'La información proporcionada lamentablemente es incorrecta.'; }); } public function remove_wp_generator() { remove_action( 'wp_head', 'wp_generator' ); } public function mitigation_remove_footer_shake() { remove_action('login_footer', 'wp_shake_js', 12); } } Mitigation::get_instance();