如果未登錄 WordPress 如何重定向用戶 » 頁面重定向

已發表: 2022-01-02

如果未登錄 WordPress 如何重定向 在上一篇文章中,我演示瞭如何檢查用戶是否已登錄 WordPress。 您可能想要檢查 WordPress 用戶是否已登錄的一個常見原因是根據 WordPress 用戶的登錄狀態顯示不同的頁面。 如果您想在未登錄 WordPress 的情況下重定向用戶,您可以通過在您的 functions.php 文件中添加一個代碼片段來實現此目的,正如您將在本快速教程中看到的那樣。

為什麼要在 WordPress 中重定向用戶?

重定向用戶是大多數 WordPress 網站的重要要求。 有時您可能希望將用戶從一個頁面重定向到另一個頁面。 例如,您可以在結帳後重定向 WooCommerce 用戶,或者您可以在註冊或重定向登錄網站後重定向用戶。

如果未登錄 WordPress 進行重定向是最常見的重定向之一。 雖然有一些插件可以幫助管理 WordPress 中的重定向,但添加一個小片段來解決這個問題是比依賴第三方插件更好的解決方案。

在本教程中,我將演示如何在您的主題或插件中添加一個片段,為未登錄到您選擇的頁面的用戶創建重定向。

未登錄 WordPress 時重定向的步驟

要在未登錄 WordPress 的情況下實現重定向,您應該按照以下步驟操作:

  1. 登錄到您的 WordPress 站點並導航到主儀表板菜單上外觀菜單下的主題編輯器。
  2. 打開活動 WordPress 主題的 functions.php文件。 您還可以使用 CPanel 或 FTP 訪問活動主題 functions.php 文件。 它位於這條路上—— wp-root-installation/wp-content/themes/active-theme/functions.php
  3. 創建一個掛鉤管理員初始化掛鉤的操作掛鉤 - admin_init ,例如add_action('init', 'redirect_if_not_logged_in') 這個鉤子有一個回調函數,它將有邏輯來檢查用戶是否登錄 WordPress,如果沒有登錄,他們將被重定向到我們希望的頁面。
  4. 如上所述創建回調函數並相應地添加代碼。
  5. 保存更改並轉到前端測試未登錄的用戶是否被重定向到您在代碼中添加的頁面。

讓我們演示如何在用戶未登錄 WordPress 的情況下添加重定向。 我將在 localhost 安裝中使用默認的 WordPress 主題,但這適用於所有其他網站,無論主題和託管環境如何。

添加重定向的代碼也可能採用另一個條件,例如在大多數情況下,當您想要限制非登錄用戶的內容時,您將檢查兩個條件:

  • 如果用戶已登錄
  • 如果用戶在您擁有受限內容的頁面上

當滿足這些條件時,您應該使用 wp_redirect() 函數將用戶重定向到您選擇的頁面。

WP功能:wp_redirect()

這是一個 WordPress 重定向功能,可用於主題和插件來重定向用戶。 該函數的一般表達式如下:

wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

如您所見,該函數具有三個參數,如下所示:

範圍描述
$location 這是您要重定向用戶的 URL。 當您在用戶未登錄時使用此功能時,您需要提供我們將重定向用戶的頁面的 URL,如您將在代碼示例中看到的那樣
$status 這是一個可選參數,您可能不會經常看到它,但它是要使用的 HTTP 響應狀態代碼。 默認為“302”,您可以使用 301 進行永久重定向。 將此參數與 301 重定向選項一起使用時要小心。
$x_redirect_by 這只是應用重定向的應用程序,這很少會更改默認值,即 WordPress

如果用戶未登錄,模板重定向操作

要重定向未登錄 WordPress 的用戶,您現在可以使用 wp_redirect 函數來條件檢查用戶是否已登錄,如下所示:

 add_action('template_redirect', 'redirect_if_user_not_logged_in');

功能 redirect_if_user_not_logged_in() {

	if ( is_page('slug || ID') && !is_user_logged_in() ) { //示例可以是 is_page(23) 其中 23 是頁面 ID

		wp_redirect('http://your-redirect-page-here'); 
 
     exit;// 永遠不要忘記這個退出,因為它對於 wp_redirect() 具有退出/死亡非常重要
   
   }
   
}

將條件檢查的 slug 替換為您各自的頁面,並替換上面代碼中的重定向 URL,並將其添加到 functions.php 以將未登錄的用戶重定向到該頁面 URL。

如果用戶未登錄,管理員初始化重定向操作

或者,如果未登錄 WordPress,您可以掛接admin_init而不是template_redirect來重定向用戶。

除了添加動作鉤子之外,代碼應該是相同的。 代碼應如下所示:

 add_action('admin_init', 'redirect_if_user_not_logged_in');

功能 redirect_if_user_not_logged_in() {

if ( !is_user_logged_in() && is_page('slug') ) {

      wp_redirect('http://your-redirect-page-here'); 
   
   出口;
   }
}

當我們將此代碼添加到默認的 WordPress 主題 functions.php 並為我們要創建重定向的頁面和目標 URL 添加 slug 時,它可以完美地工作,如您所見:

如果未登錄 WordPress 如何重定向

最後的想法

當您想在用戶未登錄 WordPress 的情況下創建重定向時,您需要首先使用我在該帖子中共享的代碼檢查用戶是否已登錄,然後使用wp_redirect()函數將新目標添加到用戶應該如果他們訪問某個頁面或帖子,則會被重定向。

可以將此代碼添加到主題的 functions.php 文件中,也可以將其用作自定義 WordPress 插件的一部分。 重要的是要始終記住,當您使用wp_redirect函數時,永遠不要忘記添加退出,因為此函數不會自動退出。

作為 WordPress 插件開發人員,您還可以考慮另一個 WordPress 重定向插件 wp_safe_redirect(),它提供了一種更好的重定向方式,因為它檢查是否允許 $location 參數主機。

類似文章