Je crée une méta utilisateur personnalisée et son nom est last_activity
.
J'utilise cette méta pour obtenir la date de la dernière activité de l'utilisateur et j'ai mis à jour la méta chaque fois que l'utilisateur ouvre une page à l'aide de l'action WordPress wp_head
.
Mon problème est que l’utilisateur effectue peut-être certaines actions avec ajax sans actualiser la page, de sorte que la méta last_activity
ne sera pas mise à jour.
Ma question est donc la suivante: puis-je vérifier si l’utilisateur actuel fait une demande ajax ou non et si oui do_action
?
Vous feriez mieux de déplacer votre fonction qui met à jour la méta vers un hook fonctionnant sur le front-end et pendant les appels AJAX. Ensuite, vous n'avez pas besoin de vérifier si la demande est une demande AJAX ou non. init
est un bon choix pour cela:
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()
renvoie 0
s'il n'y a aucun utilisateur connecté, et update_user_meta()
échouera de manière silencieuse (sans frapper la base de données) si vous essayez de définir la méta sur user_id
0
, il n'est donc pas nécessaire de vérifier si un utilisateur est connecté.
Cela étant dit, vous avez indiqué vouloir stocker la date de la dernière activité. À quel point cela doit-il être précis? Mon exemple de code stocke l'heure à la seconde près, mais si vous avez seulement besoin de la journée, la mise à jour de la méta sur les demandes AJAX semble inutile. Je doute fort que de nombreux utilisateurs se rendent sur le site un jour et ne font ensuite que AJAX demandes pendant 2 jours.