Mostrar la fecha de la última visita en WordPress

Para mostrar la fecha de la última visita en WordPress de cada post en el back-end (en la lista de entradas del panel de administración), puedes hacerlo con un snippet personalizado. Esto requiere registrar y mostrar un campo personalizado que almacene la fecha de la última visita e incluso podrás hacer que sea ordenable. Si prefieres mostrar también la fecha global de la última visita en la barra superior, lee este otro artículo.

Resultado

Registrar la fecha de la última visita

Puedes usar un snippet para actualizar la fecha de la última visita cada vez que se carga un post en el front-end. Esto se guarda como un meta campo en la base de datos.

Añade el siguiente código al archivo functions.php de tu tema o mediante un plugin de snippets:

function actualizar_ultima_visita($post_id) {
    if (is_single() && !is_admin()) { // Verificar si es una entrada y no en el backend
        update_post_meta($post_id, '_ultima_visita', current_time('mysql')); // Guardar la fecha actual
    }
}
add_action('wp', function() {
    if (is_singular('post')) { // Solo aplica para entradas
        actualizar_ultima_visita(get_the_ID());
    }
});

Mostrar la última visita en el listado de entradas

Añade una nueva columna en la lista de entradas del back-end para mostrar la fecha de la última visita.

function agregar_columna_ultima_visita($columns) {
    $columns['ultima_visita'] = 'Última Visita'; // Añadir una nueva columna
    return $columns;
}
add_filter('manage_posts_columns', 'agregar_columna_ultima_visita');

function mostrar_ultima_visita_columna($column, $post_id) {
    if ($column == 'ultima_visita') {
        $ultima_visita = get_post_meta($post_id, '_ultima_visita', true); // Obtener la fecha guardada
        echo $ultima_visita ? $ultima_visita : 'Nunca'; // Mostrar la fecha o "Nunca" si no hay datos
    }
}
add_action('manage_posts_custom_column', 'mostrar_ultima_visita_columna', 10, 2);

Hacer que la columna sea ordenable (opcional)

Si deseas que la columna sea ordenable en la interfaz, puedes hacer lo siguiente:

function hacer_columna_ultima_visita_ordenable($sortable_columns) {
    $sortable_columns['ultima_visita'] = '_ultima_visita';
    return $sortable_columns;
}
add_filter('manage_edit-post_sortable_columns', 'hacer_columna_ultima_visita_ordenable');

function ordenar_por_ultima_visita($query) {
    if (!is_admin() || !$query->is_main_query()) {
        return;
    }
    if ('_ultima_visita' === $query->get('orderby')) {
        $query->set('meta_key', '_ultima_visita');
        $query->set('orderby', 'meta_value');
    }
}
add_action('pre_get_posts', 'ordenar_por_ultima_visita');

Escribir un comentario