web-dev-qa-db-ja.com

ユーザーがajaxリクエストを行っているかどうかを確認できますか?

私はカスタムユーザーをメタにし、その名前はlast_activityです。

このメタを使用してユーザーの最後のアクティビティの日付を取得し、ユーザーがWordPressのwp_headアクションを使用してページを開くたびにメタを更新しました。

last_activityメタが更新されないように、ユーザーがページを更新せずにajaxによって何らかのアクションを実行する可能性があるという私の問題。

それで、私の質問は、現在のユーザーがajaxリクエストを行っているかどうか、そしてそうであればdo_actionをチェックできるかどうかです。

4
Mido

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_id0を設定しようとするとupdate_user_meta()は黙って失敗し(データベースにアクセスせず)、ユーザーがログインしているかどうかを確認する必要はありません。

言われていること、あなたは最後の活動の 日付 を保存したいと述べました。これはどの程度正確である必要がありますか?私のコード例では、時間を秒単位で保存していますが、その日に必要な時間が1つだけの場合は、AJAXリクエストでメタを更新する必要はありません。 1日に多くのユーザーがこのサイトにアクセスしてから、2日間だけAJAXリクエストを送信するようになることは間違いありません。

1
Jacob Peattie