註銷後 WooCommerce 重定向 [終極指南]
已發表: 2022-01-10可以使用本文中的代碼創建註銷後的 WooCommerce 重定向,以在他們註銷後將 WooCommerce 客戶重定向到特定頁面或帖子或外部 URL。 在本文中,我想演示如何使用代碼創建此重定向。 如果您錯過了我之前的教程,我說明瞭如何創建 WooCommerce 註銷頁面短代碼,這可能是您在創建 WooCommerce 註銷重定向之前開始的好地方。
有一些插件可用於創建 WooCommerce 註銷重定向,但它們不如應有的好; 我正在研究一個更好的解決方案,它將幫助您在註銷後管理 WooCommerce 重定向,就像我為 WooCommerce Logout After Checkout 創建的插件一樣。
如果您想成為早期採用者,請與我聯繫,以便我可以將您添加到列表中,因為該插件將從今天起 2 週內準備就緒。
在這篇文章中,我想分享可用於創建高效 WooCommerce 註銷重定向的代碼方法,但該插件將有幾個條件選項來擴展默認重定向選項,就像我在 WooCommerce 結帳後重定向插件中完成的那樣。
WooCommerce 註銷重定向部分 - 跳過並跳到部分
在我的大多數客戶項目中,我很難讓註銷重定向在 WooCommerce 網站上工作。 出於這個原因,我決定把這個在註銷後創建 WooCommerce 重定向的終極指南放在一起。
我希望它可以成為精通技術和不精通技術的用戶找到為他們的項目創建最佳 WooCommerce 註銷重定向選項的解決方案的好地方。
由於這不是一篇普通的博客文章,它很長,可能需要更多時間來閱讀和理解每一個細節。 我想幫助您瀏覽不同的部分,以便您可以快速選擇項目所需的解決方案。
目錄
- 主頁重定向 - 註銷後重定向到 Woocommerce 中的主頁
- 當前頁面重定向 – Woocommerce 註銷按鈕並重定向到當前頁面
- 按 ID 重定向的特定頁面 – Woocommerce 註銷重定向頁面
- 客戶角色重定向 – Woocommerce 客戶註銷重定向
- 上一頁重定向- Woocommerce登錄重定向到上一頁
- 我的帳戶頁面重定向 – Woocommerce 我的帳戶註銷重定向
- 外部 URL 重定向 – Woocommerce 註銷重定向功能 Php Snippet
- 修復註銷重定向錯誤 – Woocommerce 註銷重定向不起作用
- WP 註銷重定向 URL – Woocommerce 註銷 URL
- Woocommerce 註銷重定向插件
- 在 WordPress 中創建註銷重定向 - 核心功能
- WooCommerce 登錄重定向:woocommerce_login_redirect 掛鉤
- WordPress 登出功能 – wp_logout_url()
- WordPress 過濾器掛鉤 logout_redirect
- WordPress 過濾器掛鉤 login_redirect
- 註銷後的 WooCommerce 多站點重定向
- 過濾器掛鉤:allowed_redirect_hosts
- WordPress重定向功能:wp_重定向
- WordPress 重定向功能:wp_safe_redirect()
- 結論
註銷後的 WooCommerce 重定向
默認情況下,WooCommerce 在註銷、註冊和登錄後會將用戶重定向到“我的帳戶”。 這種行為是不可取的,尤其是在旨在增加銷售額的網站上。
您的 WooCommerce 網站上三個最常見的用戶管理操作包括:
- 用戶註冊
- 用戶登錄
- 用戶註冊
- 用戶資料編輯
- 用戶註銷
這些操作中的每一個都可以改進,不僅使用戶更容易順利導航,而且還增加了新客戶和現有客戶的銷售前景。 Woocommerce 註銷 URL 或鏈接默認位於“我的帳戶”頁面上,大多數 WooCommerce 商店所有者希望更改“我的帳戶”頁面上的註銷重定向以重定向到特定頁面或 WooCommerce 銷售渠道。
如何從我的帳戶頁面重定向註銷?
關於 WooCommerce 註銷的最常見問題之一是如何從“我的帳戶”頁面創建自動註銷並重定向到另一個網站或內部頁面。
這是將在這篇文章中解決和解決的問題,在本教程結束時,您應該輕鬆地創建自定義 WooCommerce 註銷重定向,即使之前的編碼知識很少或沒有。
為什麼要創建 WooCommerce 註銷重定向
一個好的電子商務網站應該利用所有機會將用戶重定向到可以在每次操作後增加銷售額和轉化率的頁面——登錄、註銷、購物車、結帳、註冊等。
它是關於創建一個好的 WooCommerce 銷售漏斗來促進其他產品交叉銷售、降價銷售和其他相關產品或暢銷產品。
WooCommerce 註銷重定向允許您通過在註銷後將客戶重定向到銷售登錄頁面或戰略 WooCommerce 漏斗重定向頁面來提高銷售轉化率 - 而不是將客戶重定向到默認的“我的帳戶”頁面。
本教程將向您展示如何在註銷後更改 WooCommerce 重定向的默認設置,並將用戶重定向到自定義 URL,例如“銷售渠道”、“特價商品”、“目錄”、上一頁、特殊登錄頁面或任何外部鏈接適用於增加銷售額和轉化率。
在這篇文章中,我將與您分享一個關於如何在 WooCommerce 註銷後創建自定義重定向的快速提示,就像我之前分享的如何在結帳後創建 WooCommerce 重定向一樣。 理想情況下,默認的 WooCommerce 註銷並不像應有的那樣順利。 它顯示了一條對許多用戶來說令人討厭的確認消息。
我之前討論瞭如何刪除 WooCommerce 註銷確認消息,這使您的客戶可以更輕鬆地自動註銷您的 WooCommerce 網站而不會彈出確認消息。
我還分享了您可以在本教程中擴展的 WooCommerce 註銷代碼片段,以通過添加重定向選項來提高效率,就像我在具有條件重定向選項的結帳後重定向插件中所做的一樣。
更改 WooCommerce 註銷重定向
更改 WooCommerce 註銷重定向是您應該考慮的客戶註銷體驗的另一個重要改進,就像我說明瞭如何將 WooCommerce 註銷鏈接添加到菜單一樣。
因此,現在讓我們深入研究創建最佳 WooCommerce 註銷重定向選項,您可以立即在商店中實施該選項以改善用戶體驗。
這個選項很簡單,因為我們需要使用過濾器來檢查註銷事件發生時。
當 WooCommerce 註銷發生時,我們可以掛鉤此掛鉤 - woocommerce_login_redirect
然後將帶有重定向邏輯的回調函數傳遞到我們要在註銷後重定向用戶的頁面。
如果您不熟悉 WooCommerce 或 WordPress 操作鉤子和過濾器鉤子,那麼本關於 apply_filters 和 do_action 鉤子的教程可能是開始習慣過濾器和鉤子的好地方。
在開始創建 WooCommerce 註銷重定向功能之前始終是一個好習慣,您應該檢查用戶是否已登錄。現在讓我們概述可用於創建 WooCommerce 註銷重定向的各種選項。
這些函數中的每一個都使用默認的 WooCommerce 和 WordPress 操作掛鉤和函數,這些函數將在本教程的其他部分中詳細討論。
主頁重定向 - 註銷後重定向到 Woocommerce 中的主頁
註銷後最常見的 WooCommerce 重定向之一是主頁。 默認情況下,WooCommerce 在註銷完成後重定向到我的帳戶頁面。
如果您希望將用戶重定向到主頁,您應該考慮將此代碼添加到活動 WooCommerce 主題的 functions.php 文件中。
只需將此代碼複製到您的主題 functions.php 文件中並測試以查看 WooCommerce 用戶在註銷後是否被重定向到主頁。
註銷後重定向到主頁片段
您還可以將此代碼段添加到插件文件中,它將無縫運行。
add_action('wp_logout','njengah_homepage_logout_redirect'); 功能 njengah_homepage_logout_redirect(){ wp_redirect(home_url()); 出口; }
重定向代碼的工作原理
此代碼中使用了兩個函數和一個動作掛鉤,用於在註銷後創建 WooCommerce 重定向,如上面的代碼所示。 讓我們仔細看看這些函數和鉤子的作用:
鉤子:wp_logout
這段代碼使用了 wp_logout 動作鉤子,這篇文章在 – WordPress 鉤子 – wp_logout 部分下已經詳細討論過了。 理想情況下,這是一個默認的 WordPress 註銷鉤子,在執行註銷後觸發。
功能:wp_redirect()
在這種情況下,如果您查看回調函數,如果使用wp_redirect()
函數,該函數也在 wp_redirect WordPress 函數部分中進行了詳細說明。
函數:home_url()
回調函數中使用的最後一個函數是 home_url() ,這是一個返回當前站點主頁 url 的 WordPress 函數。
home_url( string $path = '', string|null $scheme = null )
例如,您可以使用 home_url() 函數顯示當前站點的主頁 URL,如下所示:
$url = home_url(); 迴聲 $url;
因此,在註銷後的 WooCommerce 重定向的這種情況下,它將返回當前站點 URL 並將其作為字符串添加到wp_redirect()
函數。
為了讓我們了解 WooCommerce 註銷重定向掛鉤在您的代碼中應用時的工作原理,我們需要查看這些默認的 WordPress 函數中的每一個以及它們在創建重定向中所起的作用。
當前頁面重定向 – Woocommerce 註銷按鈕並重定向到當前頁面
註銷後第二個最常見的 WooCommerce 重定向是用戶註銷後重定向到當前頁面。 當您希望用戶留在他們退出時的同一頁面時,這一點很重要。
在這種情況下,我們需要知道當前用戶的頁面並將其應用於 WooCommerce 註銷重定向邏輯。
要在註銷事件後創建 WooCommerce 重定向到當前頁面,我們需要使用get_permalink()
函數讓我們知道當前頁面,然後將其應用於註銷回調函數。
在這種情況下,您應該將以下代碼片段添加到您的functions.php
或插件文件中,以在註銷到當前頁面後執行 WooCommerce 重定向。
功能 njengah_redirect_current_page_after_logout( $logout_url, $redirect ){ 返回 $logout_url 。 '&redirect_to=' 。 get_permalink(); } add_filter('logout_url', 'njengah_redirect_current_page_after_logout', 10, 2);
代碼如何運作
此代碼包含一個過濾器掛鉤logout_url
和回調函數具有get_permalink()
WordPress 函數,該函數為前端用戶建立當前頁面並使用它返回註銷 URL。
過濾器:logout_url()
在這種情況下,我們使用logout_url
,它是另一個核心 WordPress 和 WooCommerce 註銷過濾器,已在 WordPress 函數logout_url
下面的部分中詳細討論。
此代碼可能不適用於所有用戶,並且可能對管理後端中的用戶失敗。 這是針對“我的帳戶”頁面上的客戶註銷後的適當重定向,但不適用於其他角色。
為了讓它也適用於後端的用戶,我們需要將get_permalink()
函數替換為代表當前頁面的 HTTP 查詢值。
PHP 超級全局 $_SERVER['HTTP_HOST']
所以在這種情況下,我們需要添加這個 $_SERVER['HTTP_HOST'] 超級全局函數來替代get_permalink()
函數。 $_SERVER
是一個 PHP 超級全局變量,包含有關標頭、路徑和腳本位置的信息。
$_SERVER['HTTP_HOST']
超級全局返回當前請求的主機頭。 因此,它可以幫助我們獲取當前頁面,以便我們可以在註銷後將其應用於 WooCommerce 重定向 URL。適用於所有用戶的新代碼應如下所示:
功能 njengah_redirect_current_page_after_logout( $logout_url, $redirect ){ 返回 $logout_url 。 '&redirect_to=http://' 。 $_SERVER['HTTP_HOST'] 。 $_SERVER['REQUEST_URI']; } add_filter('logout_url', 'njengah_redirect_current_page_after_logout', 10, 2);
您現在可以按照我之前分享的有關如何創建 WooCommerce 註銷按鈕的教程創建一個按鈕來包裝重定向鏈接。
特定頁面重定向 – Woocommerce 註銷重定向頁面(按 ID)
在某些情況下,您可能希望在用戶註銷後將其重定向到特定頁面。 可以使用頁面 ID 將頁面添加到 WooCommerce 註銷重定向邏輯。
在這種情況下,您需要知道頁面 ID,以便在重定向函數中傳遞它。 您可以使用以下代碼片段通過 id 實現 WooCommerce 註銷重定向到特定頁面。
add_action('wp_logout','njengah_specific_page_logout_redirect'); 功能 njengah_specific_page_logout_redirect(){ wp_redirect(get_permalink($pageId)); 出口; }
代碼如何運作
此代碼使用wp_logout
操作鉤子,在回調函數中,我們有帶有變量$pageID
get_permalink()
函數,該變量應替換為結帳後要重定向用戶的頁面的 ID。
如果您不確定頁面 ID,可以使用我寫的這篇關於如何在 WordPress 中獲取頁面 ID 的帖子。
WooCommerce 功能:wc_get_page_id()
您還可以使用要重定向用戶的頁面名稱以及wc_get_page_id()
WooCommerce 函數,如下面的代碼片段所示:
add_action('wp_logout','njengah_specific_page_logout_redirect'); 功能 njengah_specific_page_logout_redirect(){ wp_redirect(get_permalink(wc_get_page_id('shop'))); 出口; }
wc_get_page_id()
函數檢索頁面 id,它通常用於 myaccount、edit_address、shop、cart、checkout、pay、view_order、terms,如果沒有找到頁面則返回 -1。
客戶角色重定向 – Woocommerce 客戶註銷重定向
註銷後的另一個 WooCommerce 重定向場景是您希望根據角色重定向用戶的地方。 您可能希望在客戶註銷後將其重定向到給定頁面,而不是在註銷後默認“我的帳戶”重定向。
在這種情況下,您可以使用下面共享的代碼片段單獨為客戶角色或另一個角色或一組角色在註銷後執行重定向:
if( is_user_logged_in() ) { // 檢查是否有登錄用戶 $user = wp_get_current_user(); // 獲取&設置當前用戶 $roles = ( 數組 ) $user->roles; // 獲取角色 // $角色[0]; // 返回一個角色 //返回$角色; // 返回角色數組 // 在這裡進行比較 if($roles[0] == '客戶'){ // 如果當前用戶的角色等於客戶,則執行重定向 add_action('wp_logout','njengah_specific_page_logout_redirect'); 功能 njengah_specific_page_logout_redirect(){ wp_redirect(get_permalink($pageId)); 出口; } } }
代碼如何運作
我們首先檢查用戶是否已登錄,正如我在之前關於如何查找 WordPress 用戶是否已登錄的文章中所解釋的那樣。
獲取用戶角色
第二步是使用wp_get_current_user()
函數獲取 WordPress 中當前用戶的角色,並確定當前用戶的角色。
如果角色匹配客戶,則比較並執行重定向
第三步是現在將上一步中獲得的角色與客戶角色進行比較,如果角色匹配,您現在添加重定向操作和功能。
您可以將該角色替換為另一個其他角色,包括自定義角色。 您還可以通過在get_permalink()
函數中傳遞不同的頁面 ID 來更改重定向頁面。
上一頁重定向- Woocommerce 註銷重定向到上一頁
您可以在註銷到上一頁後使用會話創建 WooCommerce 重定向。 在這種情況下,您需要創建一個會話並將其添加到一個函數中,並在邏輯中使用它來創建註銷後到上一頁的重定向。
您可以使用下面的代碼片段創建 WooCommerce 註銷重定向到上一頁:
// 啟動全局會話以保存引用 url 功能開始會話(){ session_start(); } add_action('init', 'start_session', 1); // 獲取引用地址並保存 功能重定向網址(){ if (is_user_logged_in()) { $_SESSION['referer_url'] = wp_get_referer(); } 別的 { session_destroy(); } } add_action('template_redirect', 'redirect_url'); //註銷重定向 功能 njengah_logout_redirect() { if (isset($_SESSION['referer_url'])) { wp_redirect($_SESSION['referer_url']); } 別的 { wp_redirect(home_url()); } } add_filter('wp_logout', 'njengah_logout_redirect', 1100, 2);
代碼如何運作
此代碼使用 PHP 會話來創建會話並保存當前頁面 URL,並在重定向函數中測試設置的會話 URL - $_SESSION['referer_url']
。
如果設置了它,我們將創建到該頁面的重定向,就像我們之前討論的其他註銷重定向一樣。
我的帳戶頁面重定向 – Woocommerce 我的帳戶註銷重定向
我的帳戶頁面中的 WooCommerce 註銷重定向是有關 WooCommerce 註銷的最常見問題之一。
這與其他註銷重定向沒有什麼不同,實際上您可以使用以下代碼片段在“我的帳戶”頁面上添加註銷重定向:
add_action('wp_logout','njengah_my_account_page_logout_redirect'); 功能 njengah_my_account_page_logout_redirect(){ wp_redirect(get_permalink($pageId)); 出口; }
您可以在 get_permalink() 函數中更改$pageID
pageID 變量的值以對應重定向頁面或帖子的頁面 ID,這將無縫工作。
外部 URL 重定向 - Woocommerce 註銷重定向功能 PHP 片段:
如果您想在用戶從您的 WooCommerce 商店註銷後將其重定向到外部 URL,您可以使用添加到主題功能或自定義插件中的片段來完成此操作。
這個 WooCommerce 註銷重定向函數 php 片段可以添加到 functions.php 文件中以在註銷後創建重定向,如下所示:
add_action('wp_logout','njengah_redirect_after_logout'); 功能 njengah_redirect_after_logout(){ wp_redirect($url); 出口(); }
只需在 functions.php 中添加此代碼片段,並將$url
變量替換為您各自的重定向 URL 引號。
例如,如果您想在用戶註銷後將其重定向到外部 URL,並且外部 URL 是 http://example.com ,則可以將$url
變量替換為完整的 URL,如下面的代碼所示:
add_action('wp_logout','njengah_redirect_after_logout'); 功能 njengah_redirect_after_logout(){ wp_redirect('http://example.com'); 出口(); }
WP 註銷重定向 URL – Woocommerce 註銷 URL
如果您想創建一個 WooCommerce 註銷按鈕並將其放置在自定義模板或任何其他頁面中,它可以幫助您了解 WP 註銷重定向 URL,您可以輕鬆地將其添加到任何按鈕或鏈接上。
以下是WP註銷重定向URL,可以通過更改參數'my-account'更改為任何其他頁面“
wp_logout_url( get_permalink(wc_get_page_id('myaccount')) );
您還可以在 WooCommerce 註銷重定向 URL 中使用外部 URL,如下所示:
wp_logout_url( 'http://example.com/' );
您還可以將 WordPress 功能添加到 WP 註銷重定向 URL,如下所示:
wp_logout_url( home_url() );
此 WP 註銷重定向 URL 可以添加到自定義模板中,也可以在短代碼或按鈕中使用,以在不是註銷按鈕默認位置的位置顯示註銷選項,例如小部件、頁腳、頂部欄菜單等等。
修復註銷重定向錯誤:Woocommerce 註銷重定向不起作用
如果您自定義了 WooCommerce 註銷重定向但它不起作用,則可能是您的代碼中存在錯誤或以下原因之一。
掛鉤優先級
第一步是檢查add_action()
或add_filter()
與其他 WordPress 掛鉤的優先級。 這是註銷重定向錯誤的最常見原因之一。
鉤子的優先級越高,加載發生的越早。 如果兩個鉤子具有相同的優先級,則首先加載位於另一個頂部的鉤子。 調整動作或過濾鉤子的優先級可能是開始調試的好地方。
代碼錯誤 – 語法錯誤
第二步你需要檢查所有代碼是否有錯誤,常見的錯誤是語法錯誤。 可能在您編輯代碼時,您可能會忘記放置右引號或括號。
計數器檢查代碼,最好將代碼添加到 PHP 語法錯誤檢查器。
最好熟悉 Visual Studio 等工具或 Netbeans 等 IDE,因為這些工具可以快速幫助您找出代碼中的語法錯誤。
添加到錯誤文件的代碼
WooCommerce 註銷重定向不起作用錯誤的另一個常見原因是當您擁有正確的代碼但將其添加到錯誤的位置時。 在這種情況下,如果您要將代碼添加到主題中,則應嚴格將其添加到 functions.php 文件中。
將此代碼添加到插件時,應注意不要將其添加到未實例化的類中。 將它添加到插件基礎文件中並修復任何可能需要的更改以確保代碼適合您的自定義插件文件結構的上下文是一個好主意。
插件或主題衝突
在大多數情況下,有一些插件或主題可以控制 WooCommerce 中的登錄和註銷重定向。 這些插件可能會發生衝突,導致註銷重定向錯誤。
如果您遇到 WooCommerce 重定向註銷錯誤,您可以首先停用所有插件並使用默認的 WordPress 主題來檢查錯誤是否是由插件或主題衝突引起的。
Woocommerce 註銷重定向插件
最後,沒有什麼比具有正確功能、良好用戶體驗和世界級支持的編碼良好的插件更容易在註銷後添加 WooCommerce 重定向了。 多年來,我在 WooCommerce 和 WordPress 上修復了數百個註銷、登錄和註冊問題。
在過去的幾周里,我匯總了關於 WooCommerce 重定向和註銷的所有經驗和教訓。 我已經建立了一個非凡的 WooCommerce 註銷重定向 URL,它包含以下功能:
註銷重定向功能
- 註銷後 WooCommerce 重定向到任何頁面 - 從下拉列表中選擇頁面
- 註銷後 WooCommerce 重定向到任何單個產品 - 從下拉列表中選擇產品
- 註銷後 WooCommerce 重定向到任何單個帖子 - 從下拉列表中選擇帖子
- 註銷後 WooCommerce 重定向到任何產品類別 - 從下拉列表中選擇產品類別
- 註銷後 WooCommerce 重定向到當前頁面
- 註銷後 WooCommerce 重定向到上一頁
- 註銷後 WooCommerce 重定向到外部 URL
- WooCommerce 根據角色在註銷後重定向
- WooCommerce 在註銷後根據購買歷史重定向(適用於特價商品)
- 結帳後 WooCommerce 強制註銷
登錄重定向功能
- WooCommerce 登錄後重定向到任何頁面 - 從下拉列表中選擇頁面
- WooCommerce 登錄後重定向到任何單個產品 - 從下拉列表中選擇產品
- WooCommerce 登錄後重定向到任何單個帖子 - 從下拉列表中選擇帖子
- WooCommerce 登錄後重定向到任何產品類別 - 從下拉列表中選擇產品類別
- 登錄到當前頁面後,WooCommerce 重定向
- WooCommerce 登錄後重定向到上一頁
- 登錄到外部 URL 後 WooCommerce 重定向
- WooCommerce 登錄後根據角色重定向
- WooCommerce 登錄後根據購買歷史重定向(適用於特價商品)
WooCommerce 登錄和註銷後重定向 (WRAL) 插件將在未來幾週內發布。 如果您想成為早期採用者,請不要落後,因為發布將提供 70% 的折扣。
您可以立即與我聯繫,加入前 100 名早期採用者的名單。 它將於2020年 11 月 2 日發布。
在 WordPress 中創建註銷重定向 - 核心功能
在查看了在註銷後添加片段以創建 WooCommerce 重定向的快速方法之後,它有助於突出顯示默認的 WordPress 註銷功能和掛鉤,並為正在閱讀本指南以了解這些重定向如何工作的開發人員詳細解釋。
這些功能和操作掛鉤可用於在註銷後創建 WooCommerce 重定向。 通常,您可以使用以下鉤子和函數創建 WooCommerce 註銷重定向:
- wp_logout_url() 函數
- wp_logout 動作鉤子
- 註銷重定向過濾器
我想解釋這些功能中的每一個,以及如何在結帳後使用它來創建 WooCommerce 重定向,以及為什麼你可能想要使用其中一個而不是另一個。
強調使用過濾器創建 WooCommerce 登錄重定向的方式也很重要。 還有一個功能對於在 WooCommerce 中創建登錄重定向也很有用。 讓我們從登錄重定向鉤子開始,它對於在 WooCommerce 中創建登錄重定向非常有用。
WooCommerce 登錄重定向:woocommerce_login_redirect 掛鉤
這是允許我們控制 WooCommerce 中的登錄重定向功能的特殊 WooCommerce 鉤子。 它類似於在註銷後創建 WooCommerce 重定向時應用的默認 WordPress 註銷功能。 其基本用法如下:
apply_filters( 'woocommerce_login_redirect', $redirect, $user );
如您所見,它需要2個參數,參數如下:
範圍 | 描述 | 使用示例 |
$redirect | 這是用戶登錄後將登陸的重定向頁面。 在登錄後更改默認的 WooCommerce 重定向以允許用戶在登錄後登陸特定頁面時很有用。 | add_filter('woocommerce_login_redirect', 'login_redirect') 您可以添加過濾器掛鉤,並在回調函數中傳遞重定向邏輯,如下所示: 如您所見,我添加了參數 $redirect_to 並返回了重定向 URL,以在用戶登錄後將用戶重定向到主頁。 |
$user | 這是應用重定向操作的用戶。 當您想在登錄後為特定用戶創建重定向時,這可能特別有用。 |
鉤子:woocommerce_login_redirect 不工作
此代碼可用於主題和插件代碼,但您需要了解優先級以避免提前或延遲觸發,這將導致woocommerce_login_redirect
無法正常工作的常見情況。
您還需要找出可能導致woocommerce_login_redirect
的其他原因。 特別感興趣的是另一個插件,它具有相似或相同的功能,可以在您的代碼被觸發之前工作。
因此,如果您發現woocommerce_login_redirect
不起作用。首先要檢查的是優先級一個案例示例,您可能有這兩個代碼片段:
# 較低的優先級
add_filter( 'woocommerce_login_redirect', 'njengah_login_redirect', 1100, 2 );
# 更高的優先級
add_filter( 'woocommerce_login_redirect', 'njengah_login_redirect', 10, 2 );
正如您所看到的,在這兩種情況下,優先級數字是不同的,基本規則是數字越小優先級越高——意味著它首先加載。
當您在主題或其他插件的其他地方使用此功能並且您嘗試在登錄或註銷功能後重新創建 WooCommerce 重定向時,您需要注意優先級。 這是解決woocommerce_login_redirect
不起作用問題的解決方案。
WordPress 登出功能 – wp_logout_url()
該函數負責在 WordPress 中創建註銷 URL。
它可以幫助開發人員和 WordPress 用戶快速創建一個可以添加到鏈接或按鈕的註銷 URL,我在本文中進行了說明——如何創建 WooCommerce 註銷 URL 。
WooCommerce 通過讓 URL 端點在幫助開發人員和用戶創建 WooCommerce 註銷頁面方面發揮關鍵作用而無需任何編碼來擴展功能。
如果您想深入了解 WooCommerce 和 WordPress 註銷過程,從評估wp_logout_url()
函數開始會有所幫助。
這是一個特殊的功能,您會在幾個 WordPress 主題和插件中遇到它,並且最好了解一下幕後發生的事情。
該函數的基本用法如下:
wp_logout_url( string $redirect = '' )
如您所見,該函數採用一個字符串參數,以下是參數的詳細信息:
範圍 | 描述 | 使用示例 |
$redirect | 這是一個字符串參數,添加它是可選的,您可以將其留空,該功能將起作用。 但是,在您想要將重定向 URL 添加到特定頁面的情況下,它很有用。 因此,在這種情況下, 您還可以將其他函數作為嚴格返回字符串的參數傳遞,因為 | 您可以使用此功能以及如下鏈接: 您可以使用此函數並將另一個函數作為參數傳遞,該函數返回重定向 URL 的字符串,如下所示: |
如果您想進一步了解該功能,請查看 WordPress 核心中定義的代碼。 該核心功能代碼如下:
函數 wp_logout_url( $redirect = '' ) { $args = 數組(); 如果(!空($重定向)){ $args['redirect_to'] = urlencode($redirect); } $logout_url = add_query_arg($args, site_url('wp-login.php?action=logout', 'login')); $logout_url = wp_nonce_url( $logout_url, '註銷' ); /** * 過濾註銷 URL。 * * @since 2.8.0 * * @param string $logout_url HTML 編碼的註銷 URL。 * @param string $redirect 註銷時重定向到的路徑。 */ 返回 apply_filters('logout_url', $logout_url, $redirect); }
動作掛鉤:wp_logout
這是一個在用戶退出時觸發的動作鉤子。 它在註銷後創建重定向功能中起著重要作用。該功能的基本用法如下:
do_action( 'wp_logout', int $user_id )
如您所見,它需要一個參數,參數的詳細信息如下:
範圍 | 描述 | 使用示例 |
$user_id | 這是已註銷用戶的 ID。 | add_action('wp_logout','logout_redirect'); 在這種情況下,我們將它添加為一個動作鉤子,我們可以在回調函數中傳遞註銷邏輯後的重定向,如下所示: 因此,在這種情況下,我們在註銷後將用戶重定向到主頁。 |
當您想在用戶登錄或註銷後控制用戶的重定向時,這些功能很有用。
WordPress 過濾器掛鉤 logout_redirect
在 WooCommerce 中註銷後可用於創建重定向的另一個過濾器掛鉤是過濾器掛鉤 logout_redirect。 這個過濾器鉤子像wp_logout_url()
函數或 wp_logout 動作鉤子一樣工作。
它是一個基本的 WordPress 過濾器,旨在幫助在註銷後創建 WordPress 或 WooCommerce 重定向。 其基本用法如下:
apply_filters( 'logout_redirect', string $redirect_to, string $requested_redirect_to, WP_User $user )
如您所見,它具有三個參數,參數可以詳細描述如下:
範圍 | 描述 |
$redirect_to | 這是重定向目標 URL,它必須是字符串,例如 http://example.com |
$requested_redirect_to | 這是作為參數傳遞的請求的重定向目標 URL,它也必須是字符串,就像第一個參數一樣。 |
$user | 這是用戶對象 - 已註銷用戶的 WP_User 對象。 |
您可以在註銷後使用 logout_redirect 創建基於過濾器的 WordPress 重定向,如下所示:
add_filter('login_redirect', 'njengah_logout_redirect', 10, 3); 功能 njengah_logout_redirect( $location, $request, $user ) { 全局$用戶; if ( isset( $user->roles ) && is_array( $user->roles ) ) { if ( in_array( '訂閱者', $user->roles ) ) { 返回 home_url(); } 別的 { 返回 $redirect_to; } } 返回; }
WordPress 過濾器掛鉤 login_redirect
同樣重要的是要指出有一個類似的登錄過濾器 - login_redirect 它的工作方式與 logout_redirect 過濾器相同。 其實用法也差不多,都帶了3個參數,一般表達式如下:
apply_filters( 'login_redirect', string $redirect_to, string $requested_redirect_to, WP_User|WP_Error $user )
The parameters are similar expect the last parameter that has two user object options as you will see in the detailed description below:
範圍 | 描述 |
$redirect_to | This is the redirect destination URL and it must be a string, for example, http://example.com |
$requested_redirect_to | This is the requested redirect destination URL that is passed as a parameter and it must also be a string just like the first parameter. |
$user | This is the user object – WP_User object of the user who has been logged in if the login was successful but for unsuccessful login the WP_Error object is represented by this parameter |
As you can see there are several ways you can use to create a WordPress or WooCommerce logout redirect.
In a quick summary we have highlighted the three most important hooks you should consider using for creating the redirect after logout. These hooks include:
- Default WordPress
logout_redirect
– using filter to create redirect after logout - Action hook
wp_logout
– fired after the logout and thus can be used to create redirect. - WordPress logout function
wp_logout_url()
– WordPress default function that retrieves the logout URL and this can be useful in adding a redirect since it takes one parameter for the redirect path.
WooCommerce Multisite Redirect After Logout
When you are creating a redirect after logout in WooCommerce the wp_logout
hook may fail to work when you have a multisite. In this case you need a little creativity to control how to create the WooCommerce redirect after logout.
In fact in a multisite set up WordPress logout function requires you to filter the allowed URLs for redirect and this can easily be executed using the allowed_redirect_hosts
filter.
It helps to understand how this filter hook works so that you can use it in the WooCommerce multisite redirect after checkout. So let's briefly look at this filter.
Filter Hook: allowed_redirect_hosts
This is a filter hook that filters all the allowed hosts to apply redirect to. So in simple terms it checks the redirect URLs and vets them. The basic usage of this filter is as follows:
apply_filters( 'allowed_redirect_hosts', string[] $hosts, string $host )
As you can see in the expression above, it takes two parameter and they can be explained in details as follows:
範圍 | 描述 | Usage Example(s) |
$hosts (string[]) | This is simply an array with all the allowed host names | add_filter( 'allowed_redirect_hosts', 'njengah_allow_parent_redirect' ); |
$host (string) | This is the host name of the redirect destination. This can be left empty. |
You can add more hosts to the callback function and come up with code like this:
add_filter('allowed_redirect_hosts', 'njengah_allow_parent_redirect'); 函數 njengah_allow_parent_redirect( $allowed ) { $允許 = 數組( 'blog.example.com', 'codex.example.com', ); 返回 array_merge( $hosts, $allowed ); }
這僅用於驗證允許的重定向 URL,這是註銷後 WooCommerce 重定向的重要補充,因為在大多數情況下,默認wp_logout
重定向將在沒有過濾重定向主機的情況下失敗。
WordPress重定向功能:wp_重定向
當您在 WooCommerce 或 WordPress 中創建重定向時,正如我在有關如何在 WooCommerce 中結帳後創建重定向的帖子中解釋的那樣,您需要wp_redirect()
函數。
了解此功能的作用對於在結帳後創建 WooCommerce 重定向至關重要,因為它是負責在 WordPress 和 WooCommerce 中執行重定向的核心功能。 讓我們簡要概述一下它是如何工作的以及它採用的參數。 wp_redirect()函數的一般用法如下:
wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )
如您所見,此函數接受三個參數,它們可以詳細描述如下:
範圍 | 描述 |
$location | 這是重定向用戶的路徑或 URL。 它必須是一個字符串,並且它是函數工作所必需的。 |
$status | 這是應該應用於此重定向的 HTTP 響應狀態代碼,這是一個整數,使用它是可選的。 例如,您可以為永久重定向添加 301,也可以將其保留為默認值,即 302,表示暫時移動。 |
$x_redirect_by | 這是執行重定向的應用程序,默認情況下是 WordPress,並且應該很少取消設置,因為我們在註銷後創建 WooCommerce 重定向,這是在 WordPress 的上下文中。 |
筆記
重要的是要了解,當您使用 wp_redirect() 函數時,tit 不會自行退出。 因此,始終在函數後添加 exit 很重要,因為 PHP 中的 exit 用於在執行上一行代碼後終止當前正在運行的腳本。 所以使用wp_redirect
函數的最佳方式如下:
wp_redirect($url); 出口
您還可以使用帶有if statement
的 wp_redirect 函數創建條件重定向,如下所示:
if ( wp_redirect( $url ) ) { 出口; }
該函數可以與template_redirect
鉤子一起使用,如下代碼所示:
功能 njengah_wp_redirect_example() { if ( is_user_logged_in() && is_page( $id ) ){ wp_redirect(get_permalink($id)); 出口; } } add_action('template_redirect', 'njengah_wp_redirect_example');
正如您在上面的代碼中所看到的,它可以將函數作為參數,前提是該函數為 $location 參數返回一個字符串,就像get_permalink( )
函數一樣
WordPress 重定向功能:wp_safe_redirect()
wp_safe_redirect()
是第二個 WordPress 重定向函數,可用於在註銷後執行 WooCommerce 重定向。此函數的工作方式與wp_redirect()
函數類似,但它對重定向 URL 有額外的驗證。
在 wp_redirect 函數中,$location 參數未被驗證,但在wp_safe_redirect()
函數中, $location
參數被檢查以確定它是否是允許的主機。
這就是兩個重定向功能之間的區別。 該重定向函數的一般用法與wp_redirect
類似,一般表達式如下:
wp_safe_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )
如您所見,參數是相同的:
範圍 | 描述 |
$location | 這是重定向用戶的路徑或 URL。 它必須是一個字符串,並且它是函數工作所必需的。 |
$status | 這是應該應用於此重定向的 HTTP 響應狀態代碼,這是一個整數,使用它是可選的。 例如,您可以為永久重定向添加 301,也可以將其保留為默認值,即 302,表示暫時移動。 |
$x_redirect_by | 這是執行重定向的應用程序,默認情況下是 WordPress,並且應該很少取消設置,因為我們在註銷後創建 WooCommerce 重定向,這是在 WordPress 的上下文中。 |
此功能允許插件開發人員設置或刪除允許的主機列表,如果主機不在允許的主機列表中,則重定向失敗並默認為 wp-admin。
就像wp_redirect
函數一樣, wp_safe_redirect
不會自動退出,它還需要您添加退出,如下面的代碼片段所示:
wp_safe_redirect($url); 出口;
您還可以將它與上一個示例中的條件語句一起使用:
if ( wp_safe_redirect( $url ) ) { 出口; }
結論
在這篇文章中,我概述了在註銷選項後創建各種 WooCommerce 重定向的分步方法。 我用代碼示例說明瞭如何使用來自 WordPress 核心的各種可用功能和掛鉤來創建 WordPress 或 WooCommerce 重定向註銷。
快速總結一下我們所涵蓋的內容; 註銷後如何創建重定向到:
- 當前頁面註銷重定向
- 上一頁註銷重定向
- 主頁註銷重定向
- 特定頁面註銷重定向
- 外部 URL 註銷重定向
我希望本指南為您在 WooCommerce 中創建註銷重定向時提供了一個很好的起點。 如果您想分享反饋或為改進本指南做出貢獻,甚至指出錯誤或錯誤,請隨時與我聯繫。 如果您喜歡本指南,您可能還想查看我寫的關於如何在購買後創建 WooCommerce 重定向的其他指南。
類似文章
- 如何通過命令行創建 MySQL 數據庫 WordPress
- WooCommerce 註銷 PHP 代碼段以創建註銷按鈕
- 如何在 Woocommerce 的“我的帳戶”頁面菜單中添加新菜單
- 如何重新排序類別商店頁面 WooCommerce 店面主題
- 如何在 WooCommerce 中獲取付款方式 » 代碼示例
- 如何開始使用 WooCommerce 店面主題
- 如何開始使用 Vue Storefront [初學者指南]
- 如何設置 WooCommerce 店面主題產品頁面全寬
- 如何更改店面主題標語 WooCommerce
- 如何在 WooCommerce 店面設置主頁
- 如果未登錄 WordPress 如何重定向用戶 » 頁面重定向
- 如何更改 WooCommerce 的“已添加到購物車”通知
- 如何在沒有插件的情況下重定向 WordPress 頁面?
- 如何在 WordPress 中獲取登錄用戶信息
- 如何刪除相關產品 WooCommerce 店面主題
- 如何檢查用戶是否在 WordPress 中登錄
- 如何添加店面主題標題背景圖像
- 如何刪除頁面標題 WooCommerce 店面主題
- 如何設置 WooCommerce 店面運輸快速指南
- 如何刪除下載菜單我的帳戶頁面 WooCommerce
- 如何更改 WooCommerce 店面徽標大小
- 如何在 the_content 之前或之後添加內容以及在自定義帖子類型中
- 如何使 Divi 移動菜單可滾動快速修復解決方案
- 在 WooCommerce 中如何在價格前添加文本 » 在價格前添加文本
最佳 WooCommerce 插件列表
- 為您的商店提供 30 多個最佳 WooCommerce 插件(大多數是免費的)
- 用於客戶反饋的 26 個最佳 WooCommerce 插件
- 用於列表構建的 30 多個最佳 WordPress 郵件列表插件
- 30 多個用於成功博客的最佳 WordPress 博客插件