Posso verificar se o usuário está fazendo alguma solicitação ajax?

4

Eu faço uma meta de usuário personalizada e seu nome é last_activity .

Eu uso essa meta para obter a data da última atividade do usuário e atualizei a meta cada vez que o usuário abre uma página usando o WordPress wp_head action.

Meu problema é que o usuário talvez realize algumas ações do ajax sem atualizar a página, então, com certeza, o last_activity meta não será atualizado.

Então, minha pergunta é se posso verificar se o usuário atual faz algum pedido ajax ou não e se sim, então do_action ?

    
por Mido 16.03.2018 / 17:29

1 resposta

1

Seria melhor você mover sua função que atualiza a meta para um gancho que é executado no front-end e durante as chamadas AJAX. Então você não precisa se preocupar em verificar se a solicitação é um pedido AJAX ou não. init é uma boa escolha para isso:

function wpse_297026_update_user_activity() {
    update_user_meta( get_current_user_id(), 'last_activity', time() );
}
add_action( 'init', 'wpse_297026_update_user_activity' );

get_current_user_id() retornará 0 se não houver usuário logado e update_user_meta() falhará silenciosamente (sem atingir o banco de dados) se você tentar definir meta em user_id 0 , portanto, não há necessidade de verificar se um usuário está logado.

Tudo o que foi dito, você mencionou o desejo de armazenar a data da última atividade. Quão preciso isso precisa ser? Meu código de exemplo está armazenando o tempo até o segundo, mas se você precisar apenas do dia, atualizar o meta em solicitações AJAX parece desnecessário. Eu duvido que você tenha muitos usuários visitando o site um dia e, em seguida, apenas fazendo solicitações de AJAX por dois dias.

    
por Jacob Peattie 16.03.2018 / 17:40