私はカスタムユーザーをメタにし、その名前はlast_activity
です。
このメタを使用してユーザーの最後のアクティビティの日付を取得し、ユーザーがWordPressのwp_head
アクションを使用してページを開くたびにメタを更新しました。
last_activity
メタが更新されないように、ユーザーがページを更新せずにajaxによって何らかのアクションを実行する可能性があるという私の問題。
それで、私の質問は、現在のユーザーがajaxリクエストを行っているかどうか、そしてそうであればdo_action
をチェックできるかどうかです。
AJAXの呼び出し中に、フロントエンドの および で実行されるフックにメタを更新する関数を移動することをお勧めします。そうすれば、リクエストがAJAXリクエストかどうかをチェックすることを気にする必要はありません。これにはinit
が適しています。
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()
が0
を返し、user_id
に0
を設定しようとするとupdate_user_meta()
は黙って失敗し(データベースにアクセスせず)、ユーザーがログインしているかどうかを確認する必要はありません。
言われていること、あなたは最後の活動の 日付 を保存したいと述べました。これはどの程度正確である必要がありますか?私のコード例では、時間を秒単位で保存していますが、その日に必要な時間が1つだけの場合は、AJAXリクエストでメタを更新する必要はありません。 1日に多くのユーザーがこのサイトにアクセスしてから、2日間だけAJAXリクエストを送信するようになることは間違いありません。