¿Puedo verificar si el usuario está haciendo alguna solicitud ajax?

4

Hago un meta de usuario personalizado y su nombre es last_activity .

Utilizo este meta para obtener la fecha de la última actividad del usuario y actualizo el meta cada vez que el usuario abre una página con la acción de WordPress wp_head .

Mi problema es que el usuario tal vez realice algunas acciones con ajax sin actualizar la página, por lo que no se actualizará last_activity meta.

Entonces, mi pregunta es ¿puedo comprobar si el usuario actual está haciendo alguna solicitud de ajax o no y si es así, do_action ?

    
pregunta Mido 16.03.2018 - 17:29

1 respuesta

1

Será mejor que mueva su función que actualiza el meta a un gancho que se ejecuta en el extremo frontal y durante las llamadas AJAX. Entonces no debe preocuparse por verificar si la solicitud es una solicitud AJAX o no. init es una buena opción para esto:

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() devuelve 0 si no hay un usuario registrado, y update_user_meta() fallará silenciosamente (sin llegar a la base de datos) si intenta establecer el meta en user_id 0 , por lo que no hay necesidad de verificar si un usuario ha iniciado sesión.

Habiendo dicho todo esto, mencionaste que querías almacenar la fecha de la última actividad. ¿Qué tan preciso debe ser esto? Mi código de ejemplo es almacenar el tiempo hasta el segundo, pero si solo necesita el día, entonces la actualización del meta en las solicitudes AJAX parece innecesaria. Dudo mucho que tengas muchos usuarios visitando el sitio un día y luego solo hagas solicitudes AJAX durante 2 días.

    
respondido por el Jacob Peattie 16.03.2018 - 17:40

Lea otras preguntas en las etiquetas