[英]WordPress - Redirect logged in users from login page to custom page
[英]Redirect not - logged in users to custom login page
我目前正在使用 wordpress 構建自己的網站。我設計了自己的登錄頁面,並希望用戶在未登錄時被重定向到該頁面。
這個問題有幾種解決方案,但是,它們似乎都不起作用。
我試過了:
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;
}
首先,安裝“強制登錄”在訪問主頁時不起作用,只有在向主頁添加 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
之前但在init
和wp
之后。
您可以使用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.