WordPress biedt je de mogelijkheid om verschillende gebruikers toegang te geven tot je website. Door middel van verschillende rollen kan je bepaalde gebruikers meer – of net minder – rechten geven. Afhankelijk van je site-instellingen kan je zelf iedereen op het wereldwijde web laten registreren op jouw website.

Maar het is soms moeilijk om een overzicht te houden van de gebruikers. Hieronder leg ik je uit hoe ik een plugin schreef die je verteld wanneer een gebruiker voor de laatste keer ingelogd heeft.

Stap 1 – Creëer de plugin

Maak de basisstructuur aan voor de plugin:

  • tpt-last-login
    • tpt-last-login.php

Aangezien het hier gaat om een plugin die eigenlijk maar uit één bestand bestaat zou je in principe ook zonder de map kunnen werken, en gewoon tpt-last-login.php aanmaken in /wp-content/plugins.

In het pluginbestand dien je als eerste de meta-data van je plugin aan te geven:

<?php

/**
* Plugin Name: Last Login
* Description: Shows the time a user was last logged in.
* Version: 0.1
* Author: Turpoint
* Author Uri: https://turpoint.com
*/

Stap 2 – Activeer de plugin

In het WordPress dashboard zou je de plugin nu normaal gezien moeten zien onder “Plugins”. Je mag deze activeren.

Stap 3 – Bijhouden wanneer een gebruiker inlogt

Om te tonen wanneer een gebruiker voor het laatst ingelogd was, dienen we natuurlijk eerst het tijdstip op te slaan op het moment dat hij ingelogd is. We kunnen hiervoor de wp_login-hook gebruiken.

/**
 * Store the time when a user logs in
 */
add_action('wp_login', function($login, $user) {
    // Store the time as user meta
    update_user_meta($user->ID, 'last_login', time());
}, 10, 2);

Telkens wanneer de gebruiker zich inlogt zal het tijdstip (time()) nu weggeschreven worden bij de meta data van die gebruiker.

Stap 4 – De kolom in het gebruikersoverzicht aanmaken

De nodige data wordt nu wel correct weggeschreven naar de database, maar het is uiteraard handiger dat hij op een gebruiksvriendelijke manier te raadplegen is. Het meest handige zou zijn om een kolom extra te tonen bij het overzicht van de gebruikers.

/**
 * Add a column to the users list
 */
add_filter('manage_users_columns', function($columns) {
    foreach($columns as $key => $column) {
        if ($key == 'role') {
            $columns['last_login'] = __('Last login');
        }
    }
    return $columns;
});

Herlaad je browser. Je zou nu bij de gebruikers een extra kolom moeten zien staan. Op dit moment zal dit nog een lege kolom zijn. Geen nood, dit is normaal. In de volgende stap zullen we deze vullen met data.

Stap 5 – Het tijdstip in de kolom weergeven

Om de lege kolom met een waarde te vullen dienen we gebruik te maken van de manage_users_custom_column filter.

/**
 * Shows the time in the column / user
 */
add_filter('manage_users_custom_column', function($value, $column_name, $user_id) {
    // Bail if this isn't the 'last_login' column
    if ($column_name != 'last_login') {
        return $value;
    }

    // Retrieve the time by user id
    $last_login = get_user_meta($user_id, 'last_login', true);

    // Print '-' if the user hasn't logged in yet
    if (!$last_login) {
        return '-';
    }

    // Return the timestamp in the datetime format as set in your WordPress settings
    return date(get_option('date_format') . ' ' . get_option('time_format'), (int)$last_login);
}, 10, 3);
Klaar! De plugin zou nu moeten doen wat hij moet doen. Is er iets niet helemaal duidelijk? Stuur me gerust een berichtje!