Trick # 580 | Dieser Beitrag beinhaltet 701 Wörter. – Geschätzte Lesezeit: ca. 4 Minuten.
Die Widgets im WordPress-Backend eignen sich ganz formidabel, um letzte Ereignisse auf der Website darzustellen. Auch Useraktivitäten. Mit dem heutigen Code wird ein benutzerdefiniertes Dashboard-Widget erstellt, das die Login-Aktivitäten Ihrer WordPress-User übersichtlich darstellt.
Das Widget kann besonders hilfreich sein, um aktive Benutzer zu identifizieren und potenzielle Probleme wie inaktive Konten zu erkennen.
Kopieren Sie den vollständigen Code und fügen Sie ihn in die Datei functions.php Ihres aktiven WordPress-Themes ein – im Backend unter Design/Theme-Datei-Editor:
// Dashboard-Widget mit Userprofilen erstellen
function user_activity_dashboard_widget() {
wp_add_dashboard_widget(
'user_activity_widget', // Widget-ID
'Useraktivitäten', // Widget-Titel
'display_user_activity_widget' // Callback-Funktion
);
}
add_action('wp_dashboard_setup', 'user_activity_dashboard_widget');// Daten für das Widget anzeigen
function display_user_activity_widget() {
// Benutzer abrufen
$users = get_users();
$user_data = [];// Daten der Benutzer sammeln
foreach ($users as $user) {
$last_login = get_user_meta($user->ID, 'last_login', true);
$login_count = get_user_meta($user->ID, 'login_count', true);
$first_name = get_user_meta($user->ID, 'first_name', true);
$last_name = get_user_meta($user->ID, 'last_name', true);$user_data[] = [
'id' => $user->ID,
'first_name' => $first_name ? $first_name : '',
'last_name' => $last_name ? $last_name : '',
'last_login' => $last_login ? intval($last_login) : 0,
'login_count' => $login_count ? intval($login_count) : 0,
];
}// Nach letztem Login, Nachname und Vorname sortieren
usort($user_data, function($a, $b) {
if ($b['last_login'] <=> $a['last_login']) {
return $b['last_login'] <=> $a['last_login'];
}
if (strcasecmp($a['last_name'], $b['last_name']) !== 0) {
return strcasecmp($a['last_name'], $b['last_name']);
}
return strcasecmp($a['first_name'], $b['first_name']);
});// Tabelle erstellen
echo '<table class="striped" style="width:100%; text-align:left; border-collapse: collapse;">';
echo '<thead>';
echo '<tr>';
echo '<th style="padding: 3px;">User</th>';
echo '<th style="padding: 3px;">Letzter Login</th>';
echo '<th style="padding: 3px;">Anzahl Logins</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';foreach ($user_data as $user) {
// Zeitzone Europa/Zürich einstellen
$timezone = new DateTimeZone('Europe/Zurich');
$last_login = $user['last_login'] ? (new DateTime('@' . $user['last_login']))->setTimezone($timezone) : null;echo '<tr>';
echo '<td style="padding: 3px;"><a href="' . esc_url(admin_url('user-edit.php?user_id=' . $user['id'])) . '">' . esc_html($user['last_name']) . ' ' . esc_html($user['first_name']) . '</a></td>';
echo '<td style="padding: 3px;">' . ($last_login ? $last_login->format('d.m.Y H:i') : '-') . '</td>';
echo '<td style="padding: 3px; text-align: center;">' . $user['login_count'] . '</td>';
echo '</tr>';
}echo '</tbody>';
echo '</table>';
}// Letzten Login und Login-Anzahl speichern
function track_user_login($user_login, $user) {
$user_id = $user->ID;// Letzten Login speichern
update_user_meta($user_id, 'last_login', time());// Login-Anzahl erhöhen
$login_count = get_user_meta($user_id, 'login_count', true);
$login_count = $login_count ? intval($login_count) + 1 : 1;
update_user_meta($user_id, 'login_count', $login_count);
}
add_action('wp_login', 'track_user_login', 10, 2);
Das Widget erscheint sofort im Dashboard Ihres WordPress-Backends. Es bietet eine einfache und effektive Möglichkeit, die Useraktivitäten auf dee Website zu überwachen und inaktive User rasch zu erkennen. Dank des direkten Links auf das jeweilige Userprofil, lässt sich letzteres auch einfach administrieren.
Werbung


