it-swarm.com.de

Kann ich überprüfen, ob der Benutzer eine Ajax-Anforderung ausführt?

Ich erstelle ein benutzerdefiniertes Benutzer-Meta und der Name lautet last_activity.

Ich verwende dieses Meta, um das Datum der letzten Aktivität des Benutzers abzurufen, und aktualisiere das Meta jedes Mal, wenn der Benutzer eine Seite mit der Aktion WordPress wp_head öffnet.

Mein Problem, dass Benutzer möglicherweise einige Aktionen von Ajax ausführen, ohne die Seite zu aktualisieren, damit sichergestellt ist, dass das last_activity-Meta nicht aktualisiert wird.

Also meine Frage ist, kann ich überprüfen, ob der aktuelle Benutzer eine Ajax-Anfrage macht oder nicht und wenn ja, do_action?

4
Mido

Sie sollten Ihre Funktion, mit der das Meta aktualisiert wird, besser in einen Hook verschieben, der am Frontend und während AJAX -Aufrufen ausgeführt wird. Dann brauchen Sie nicht zu prüfen, ob es sich bei der Anfrage um eine AJAX Anfrage handelt oder nicht. init ist dafür eine gute Wahl:

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() gibt 0 zurück, wenn kein Benutzer angemeldet ist, und update_user_meta() schlägt unbemerkt fehl (ohne die Datenbank zu erreichen), wenn Sie versuchen, Meta für user_id0 festzulegen, sodass nicht überprüft werden muss, ob ein Benutzer angemeldet ist.

Trotzdem haben Sie erwähnt, dass Sie das Datum der letzten Aktivität speichern möchten. Wie genau muss das sein? In meinem Beispielcode wird die Zeit auf die Sekunde genau gespeichert. Wenn Sie jedoch nur den Tag benötigen, ist die Aktualisierung des Metas für AJAX Anforderungen nicht erforderlich. Ich bezweifle sehr, dass Sie eines Tages viele Benutzer auf der Website haben und dann nur AJAX Anfragen für 2 Tage stellen.

1
Jacob Peattie