Kiedyś pisałem o tym, jak w prosty sposób ustawić, by po każdym logowaniu użytkownika do serwera VPS przychodził do nas e-mail z odpowiednią informacją.Teraz pokażę jak to zrobić w WordPressie…
E-mail z informacją o zalogowaniu się użytkownika do WordPressa
Wprawdzie każdy zainteresowany tematem zapewne bez problemu znajdzie przynajmniej kilka wtyczek, za pomocą których możemy ustawić powiadomienia o zalogowaniu się do WordPressa, ale dlaczego nie zrobić tego samemu – zwłaszcza że jest to dość prosta operacja.
Wykorzystamy tu kilka linijek kodu, które umieścimy w pliku functions.php naszego motywu (zalecam korzystać z motywów potomnych). A w przypadku gdy z Waszej strony korzysta więcej osób, być może warto skorzystać z wtyczki typu „must-use”.
Zaczynamy najpierw od przygotowania funkcji, która zostanie wykonana przy każdym logowaniu:
function webinsider_wp_email_after_user_login( $user_login ) {
// KOD DO WYKONANIA
}
add_action('wp_login', 'webinsider_wp_email_after_user_login', 99, 1);
Teraz możemy przygotować kod odpowiedzialny za wysłanie wiadomości – skorzystamy też z pobieranej powyżej zmiennej „username”, dzięki czemu w wiadomości od razu będzie nazwa użytkownika, który się zalogował:
$to = '[email protected]';
$subject = 'Webinsider - logowanie użytkownika: ' . $user_login;
$message = 'Wiadomość ze strony Webinsider.pl';
$headers = array( 'Content-Type: text/plain; charset=UTF-8;' );
wp_mail( $to, $subject, $message, $headers );
Całość będzie wyglądać tak:
function webinsider_wp_email_after_user_login( $user_login ) {
$to = '[email protected]';
$subject = 'Webinsider - logowanie użytkownika: ' . $user_login;
$message = 'Wiadomość ze strony Webinsider.pl';
$headers = array( 'Content-Type: text/plain; charset=UTF-8;' );
wp_mail( $to, $subject, $message, $headers );
}
add_action('wp_login', 'webinsider_wp_email_after_user_login', 99, 1);
Dzięki temu za każdym razem, gdy ktoś zaloguje się do panelu zarządzania WordPressem otrzymamy zdefiniowane powiadomienie (oczywiście warto wcześniej upewnić się, że w naszym WordPressie mamy poprawnie skonfigurowane konto do wysyłania wiadomości e-mail).
Jest to oczywiście wersja dość podstawowa, nic nie stoi na przeszkodzie by rozbudować to o dodatkowe opcje, np. różne adresy dla różnych użytkowników, czy powiadomienia tylko gdy zaloguje się użytkownik z wybranej grupy/z wybranymi uprawnieniami, np.:
function webinsider_wp_email_user_login( $user_login, $user ) {
$user_info = stripslashes( $user_login );
$to = '[email protected]';
$subject = get_option('blogname') . " -> " . current_filter() . ": " . $user_info;
$message = current_time( 'mysql' );
if ( !empty( $_SERVER['REQUEST_TIME'] ) ) { $message = $message . " (" . $_SERVER['REQUEST_TIME'] . ")"; }
if ( !empty( $_SERVER['REMOTE_ADDR'] ) ) { $message = $message . " | IP RA: " . $_SERVER['REMOTE_ADDR']; }
if ( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { $message = $message . " | IP X: " . $_SERVER['HTTP_X_FORWARDED_FOR']; }
if ( !empty( $_SERVER["HTTP_CF_IPCOUNTRY"] ) ) { $message = $message . " | CF CC: " . $_SERVER["HTTP_CF_IPCOUNTRY"]; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['REQUEST_URI'] ) ) { $message = $message . "Request URI: " . $_SERVER['REQUEST_URI']; }
if ( !empty( $_SERVER['SCRIPT_FILENAME'] ) ) { $message = $message . " (" . $_SERVER['SCRIPT_FILENAME'] . ")"; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['PATH_INFO'] ) ) { $message = $message . "Patch: " . $_SERVER['PATH_INFO']; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['HTTP_HOST'] ) ) { $message = $message . "HTTP Host: " . $_SERVER['HTTP_HOST']; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['HTTP_REFERER'] ) ) { $message = $message . "HTTP Referer: " . $_SERVER['HTTP_REFERER']; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['HTTP_USER_AGENT'] ) ) { $message = $message . "HTTP UA: " . $_SERVER['HTTP_USER_AGENT']; }
$headers = array( 'Content-Type: text/plain; charset=UTF-8;' );
wp_mail( $to, $subject, $message, $headers );
}
add_action( 'wp_login', 'webinsider_wp_email_user_login', 10, 2 );
Powyższy kod spowoduje przesłanie takiej wiadomości:
2017-09-15 07:58:53 (1505455132) | IP RA: [Adres IP] | IP X: [Adres IP] | CF CC: PL
Request URI: /wp-login.php (/var/www/public_html/wp-login.php)
HTTP Host: webinsider.pl
HTTP Referer: https://webinsider.pl/wp-login.php?loggedout=true
HTTP UA: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0
Oprócz standardowych funkcji WordPressa, PHP i (web)serwera wykorzystałem tu kod kraju odwiedzającego, przesyłany przez Cloudflare (moja strona akurat jest „schowana” za Cloudflare).
W tytule wiadomości korzystam z funkcji current_filter() dostępnej w WordPressie zamiast samodzielnego opisywania czynności, bo podany kod po lekkich modyfikacjach można wykorzystać również do powiadomień o innych zdarzeniach.
Rejestracja nowego użytkownika:
function webinsider_wp_email_new_user_register( $user_id ) {
$user = get_userdata( $user_id );
$user_info = stripslashes( $user->user_login );
$user_info = $user_info . "/" . $user_id;;
$to = '[email protected]';
$subject = get_option('blogname') . " -> " . current_filter() . ": " . $user_info;
$message = current_time( 'mysql' );
if ( !empty( $_SERVER['REQUEST_TIME'] ) ) { $message = $message . " (" . $_SERVER['REQUEST_TIME'] . ")"; }
if ( !empty( $_SERVER['REMOTE_ADDR'] ) ) { $message = $message . " | IP RA: " . $_SERVER['REMOTE_ADDR']; }
if ( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { $message = $message . " | IP X: " . $_SERVER['HTTP_X_FORWARDED_FOR']; }
if ( !empty( $_SERVER["HTTP_CF_IPCOUNTRY"] ) ) { $message = $message . " | CF CC: " . $_SERVER["HTTP_CF_IPCOUNTRY"]; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['REQUEST_URI'] ) ) { $message = $message . "Request URI: " . $_SERVER['REQUEST_URI']; }
if ( !empty( $_SERVER['SCRIPT_FILENAME'] ) ) { $message = $message . " (" . $_SERVER['SCRIPT_FILENAME'] . ")"; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['PATH_INFO'] ) ) { $message = $message . "Patch: " . $_SERVER['PATH_INFO']; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['HTTP_HOST'] ) ) { $message = $message . "HTTP Host: " . $_SERVER['HTTP_HOST']; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['HTTP_REFERER'] ) ) { $message = $message . "HTTP Referer: " . $_SERVER['HTTP_REFERER']; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['HTTP_USER_AGENT'] ) ) { $message = $message . "HTTP UA: " . $_SERVER['HTTP_USER_AGENT']; }
$headers = array( 'Content-Type: text/plain; charset=UTF-8;' );
wp_mail( $to, $subject, $message, $headers );
}
add_action( 'user_register', 'webinsider_wp_email_new_user_register', 10, 1 );
Skasowanie użytkownika:
function webinsider_wp_email_delete_user( $user_id ) {
$user = get_userdata( $user_id );
$user_info = stripslashes( $user->user_login );
$user_info = $user_info . "/" . $user_id;;
$to = '[email protected]';
$subject = get_option('blogname') . " -> " . current_filter() . ": " . $user_info;
$message = current_time( 'mysql' );
if ( !empty( $_SERVER['REQUEST_TIME'] ) ) { $message = $message . " (" . $_SERVER['REQUEST_TIME'] . ")"; }
if ( !empty( $_SERVER['REMOTE_ADDR'] ) ) { $message = $message . " | IP RA: " . $_SERVER['REMOTE_ADDR']; }
if ( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { $message = $message . " | IP X: " . $_SERVER['HTTP_X_FORWARDED_FOR']; }
if ( !empty( $_SERVER["HTTP_CF_IPCOUNTRY"] ) ) { $message = $message . " | CF CC: " . $_SERVER["HTTP_CF_IPCOUNTRY"]; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['REQUEST_URI'] ) ) { $message = $message . "Request URI: " . $_SERVER['REQUEST_URI']; }
if ( !empty( $_SERVER['SCRIPT_FILENAME'] ) ) { $message = $message . " (" . $_SERVER['SCRIPT_FILENAME'] . ")"; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['PATH_INFO'] ) ) { $message = $message . "Patch: " . $_SERVER['PATH_INFO']; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['HTTP_HOST'] ) ) { $message = $message . "HTTP Host: " . $_SERVER['HTTP_HOST']; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['HTTP_REFERER'] ) ) { $message = $message . "HTTP Referer: " . $_SERVER['HTTP_REFERER']; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['HTTP_USER_AGENT'] ) ) { $message = $message . "HTTP UA: " . $_SERVER['HTTP_USER_AGENT']; }
$headers = array( 'Content-Type: text/plain; charset=UTF-8;' );
wp_mail( $to, $subject, $message, $headers );
}
add_action( 'delete_user', 'webinsider_wp_email_delete_user', 10, 1 );
Zmiana danych w profilu użytkownika:
function webinsider_wp_email_user_profile_update( $user_id ) {
$user = get_userdata( $user_id );
$user_info = stripslashes( $user->user_login );
$user_info = $user_info . "/" . $user_id;;
$to = '[email protected]';
$subject = get_option('blogname') . " -> " . current_filter() . ": " . $user_info;
$message = current_time( 'mysql' );
if ( !empty( $_SERVER['REQUEST_TIME'] ) ) { $message = $message . " (" . $_SERVER['REQUEST_TIME'] . ")"; }
if ( !empty( $_SERVER['REMOTE_ADDR'] ) ) { $message = $message . " | IP RA: " . $_SERVER['REMOTE_ADDR']; }
if ( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { $message = $message . " | IP X: " . $_SERVER['HTTP_X_FORWARDED_FOR']; }
if ( !empty( $_SERVER["HTTP_CF_IPCOUNTRY"] ) ) { $message = $message . " | CF CC: " . $_SERVER["HTTP_CF_IPCOUNTRY"]; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['REQUEST_URI'] ) ) { $message = $message . "Request URI: " . $_SERVER['REQUEST_URI']; }
if ( !empty( $_SERVER['SCRIPT_FILENAME'] ) ) { $message = $message . " (" . $_SERVER['SCRIPT_FILENAME'] . ")"; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['PATH_INFO'] ) ) { $message = $message . "Patch: " . $_SERVER['PATH_INFO']; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['HTTP_HOST'] ) ) { $message = $message . "HTTP Host: " . $_SERVER['HTTP_HOST']; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['HTTP_REFERER'] ) ) { $message = $message . "HTTP Referer: " . $_SERVER['HTTP_REFERER']; }
$message = $message . "\r\n";
if ( !empty( $_SERVER['HTTP_USER_AGENT'] ) ) { $message = $message . "HTTP UA: " . $_SERVER['HTTP_USER_AGENT']; }
$headers = array( 'Content-Type: text/plain; charset=UTF-8;' );
wp_mail( $to, $subject, $message, $headers );
}
add_action( 'profile_update', 'webinsider_wp_email_user_profile_update', 10, 1 );
I wielu innych zdarzeń, bo co jak co, ale WordPress hakami stoi… ;-)
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01