本篇文章更新時間:2023/10/29
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
其實這需求也不止碰過一次,也算是常見的使用者體驗設計。讓沒登入的使用者不會在登入後就突然間斷掉原本的瀏覽動線。
設計上也不難,但不知道為啥如果找這相關的外掛,大多都是特殊用法,像是執行完某件事後的轉址等。 還沒有看到就是純粹解決登入後轉址回登入前頁面的功能。
在 functions.php
中貼上這段程式碼片段後,前端部分只要記得帶入 GET
參數 redirect_to
指向你要跳轉回的頁面,就可以在登入後觸發轉址事件。
以 WooCommerce 加入購物車後要去結帳的情境為例,如果沒登入的話先引導使用者去登入,登入後再將頁面轉址回原本的結帳夜設計:
// 禁止未登入結帳
function mxp_checkout_check_login_or_not() {
if (!is_user_logged_in() && is_checkout()) {
$redirect_to = wc_get_page_permalink('myaccount');
wp_redirect($redirect_to . '?redirect_to=' . wc_get_checkout_url());
exit;
}
}
add_action('template_redirect', 'mxp_checkout_check_login_or_not', -1);
判斷當前是否為結帳頁面,如果使用者沒登入,就讓使用者轉址到帶有 redirect_to
結帳頁面參數的登入畫面,登入後就會觸發前段的轉址回結帳頁面的機制。
如果是其他使用案例也很簡單,原理就是「讓使用者去一個可以登入的頁面,那個登入的頁面會帶著 redirect_to
的參數過去,只要登入後會有一個重新整理或是瀏覽某一個畫面的動作,就可以觸發轉址到原先指定的頁面了!