簡體   English   中英

重定向未登錄用戶到自定義登錄頁面

[英]Redirect not - logged in users to custom login page

我目前正在使用 wordpress 構建自己的網站。我設計了自己的登錄頁面,並希望用戶在未登錄時被重定向到該頁面。

這個問題有幾種解決方案,但是,它們似乎都不起作用。

我試過了:

  1. functions.php中添加代碼,例如:
<?php

function admin_redirect() {

    if ( ! is_user_logged_in() ) {

        wp_redirect( home_url( '/{custom page goes here}/' ) );

        exit;

    }

}

add_action( 'get_header', 'admin_redirect' );

它顯然沒有用 - 我還嘗試了一些其他代碼,例如(對我的header.php ):

<?php

if ( ! is_user_logged_in() ) {
    
    wp_redirect('http://somepagehere');

    exit;

}
  1. 使用插件 - 我嘗試使用“強制登錄”和“WPS 隱藏登錄”。

首先,安裝“強制登錄”在訪問主頁時不起作用,只有在向主頁添加 slug 時才禁止訪問(例如:oho.nachhilfe.de/xyz)。 它也沒有重定向到登錄頁面,而是簡單地重定向到 404 頁面(無論我的登錄 URL 是什么)。

使用“WPS 隱藏登錄”將我的登錄 URL 更改為自定義登錄也沒有用,因為這只是用默認的 wordpress 登錄頁面替換了我的自定義登錄頁面,因此,我的自定義頁面只是被 wordpress 覆蓋了。

任何想法如何解決這個問題?

這是我需要幫助的頁面: https://www.oho-nachhilfe.de

首先,讓我們都同意 WordPress 中的登錄自定義處理很糟糕。

正如 Chris 所說,前向兼容性和干擾核心不能很好地結合在一起 go。

如果這只是一個永久鏈接問題,您可以隨時自定義它們,而不是重新創建整個登錄系統。

繼續。 您的兩個 sp.net 都運行良好,但get_header是錯誤的鈎子。 重定向需要在確定加載哪個模板之前發生。 這發生在get_header之前但在initwp之后。

您可以使用template_redirect做的就是這樣做。

在確定加載哪個模板之前觸發。

<?php

add_action( 'template_redirect', function () {

    if ( ! is_user_logged_in() && ! is_page( 'login' ) ) {
    
        wp_safe_redirect( home_url( '/login/' ) );

        exit;

    };

} );

您可以參考WP Plugin API/Action Reference以更好地了解掛鈎觸發順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM