• Приветствую.

    Не знаю как лучше реализовать функцию для пользователя что-то вроде «Последний раз был на сайте: » или «Сейчас онлайн».

    Фиксировать по времени последней авторизации и по кнопке выход не подойдет.

    Почитал, что можно сделать по активности пользователя на сайте и соответственно при каждом обновлении любой страницы обновлять поле update_user_meta.

    Чтобы каждый раз при просмотре сайта не обновлять поле, сделал временной интервал при котором, например по прошествии n минут срабатывала функция обновления

    вот пример:

    <?php
    
    if (is_user_logged_in()) {
    $user = wp_get_current_user(); //текущий пользователь
    $tekushy_user = get_user_meta( $user->ID, 'last_time', true ); //последнее время обновления текущего
    
    $result = date('Y-m-d H:i:s', strtotime($tekushy_user . '+' . '1' . 'minutes')); //сложение последнего обновления + n минут
    
    $tekushee_vremy = current_time('mysql'); //текущая дата
    if ($result < $tekushee_vremy) // если текущее время стало больше чем в $result, то можно обновить снова
    {
    update_user_meta($user->ID, 'last_time', $tekushee_vremy); //обновление поля на текущее время
    }
    }
    ?>

    и вывод

    <?php
    
     echo 'Был на сайте: '.get_user_meta( $post->post_author, 'last_time', true ); 
    
    ?>

    вывод тоже надо еще доделывать в зависимости от условий.

    Вот теперь не знаю правильно делаю ил нет. может по другому как-то сделать?

Просмотр 1 ответа (всего 1)
  • вывод (для автора поста)

    <?php
     $tekushee_vremyq = current_time('mysql');
    $tim_tim = get_user_meta( $post->post_author, 'last_time', true );
    $result_tim = date('Y-m-d H:i:s', strtotime($tim_tim . '+' . '1' . 'minutes'));
    if ($result_tim > $tekushee_vremyq)
    {
    echo 'Сейчас онлайн';
    }
    else {
    $time_diff = human_time_diff( current_time('timestamp'), strtotime($tim_tim) );
    echo "Был на сайте: $time_diff назад";
    }
    ?>

    время стоит 1 минута, можно изменить и в этом коде и в предыдущем минут на 10 думаю.

    Вроде все работает, но все как-то приблезительно

Просмотр 1 ответа (всего 1)

Тема «Статус пользователя: "был на сайте", онлайн» закрыта для новых ответов.