[WordPress] 登出網站閒置使用者的方法

本篇文章更新時間:2023/08/31
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


剛好實作一個會員網站有想到這個需求。在思考前後端誰處理這問題時,看到了前端解法,直覺就是最佳解。

畢竟透過後端來去紀錄上一次的請求時間來去算閒置狀態太過於消耗資源。

這邊先貼上一個簡單的範例:

function mxp_ajax_logout_inactive_user() {
    if (!is_user_logged_in()) {
        return false;
    }
    $user_id  = get_current_user_id();
    $sessions = WP_Session_Tokens::get_instance($user_id);
    $sessions->destroy_all();
    return true;
}
add_action('wp_ajax_mxp_ajax_logout_inactive_user', 'mxp_ajax_logout_inactive_user');
function mxp_ajax_logout_inactive_user_frontend() {
    if (is_user_logged_in()):
    ?>

原理很簡單,後端寫一個 AJAX 登出的方法,等待前端 JavaScript 判斷閒置的條件成立來呼叫,登出使用者,完成!

登出的方法可以參考 [WordPress] 強迫登出使用者的方法 – WP_Session_Tokens 這篇。有一個 WordPress 4.0 以上的使用版本限制要注意。

寫文當下都已經 WordPress 6.3,我想應該是碰不太到 4.0 以下版本了..吧XD

上面的範例還有很多可以強化的,像是判斷閒置的部分,也許可以考慮使用 How to detect idle time in JavaScript 裡面討論到的方法。(jQery.idle),還有被登出的提示以及倒數顯示的地方等,算是一些使用者體驗 UX 的部分。

相信上述已經算堪用,就是整合進一個網站服務裡的時候要根據自己需求去調整。(像是秒數等條件)


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon