簡體   English   中英

覆蓋wordpress登錄重定向功能

[英]Override wordpress login redirect function

我有一個存儲在自定義插件中的登錄功能,它超越了標准的Wordpress登錄,一旦用戶登錄,就會將它們重定向到所需的頁面:

function admin_login_redirect( $redirect_to, $request, $user )
{
global $user;
if( isset( $user->roles ) && is_array( $user->roles ) ) {
if( in_array( "administrator", $user->roles ) ) {
return $redirect_to;
} else {
return home_url();
}
}
else
{
return $redirect_to;
}
}
add_filter("login_redirect", "admin_login_redirect", 10, 3);

這是一種享受,但我現在需要構建一個額外/替代登錄頁面,如果使用該頁面,則將用戶重定向到不同的登錄頁面。

似乎我唯一的三個邏輯選擇是:

  • 在新的登錄頁面中編寫代碼以忽略插件重定向功能(這甚至可能!?)
  • 識別用戶正在使用的登錄模板/表單,並將此邏輯構建到上述函數中
  • 在新/備用登錄頁面中覆蓋重定向功能(上面)。

有誰知道這些中的任何一個是否可能,如果是,我將如何采取行動呢?

我認為最好的選擇是創建一個新的登錄頁面,並在該頁面上的登錄操作后定義重定向。

自定義登錄頁面的頁面模板如下所示:

<?php
    // Define custom redirect
    $custom_redirect = "REDIRECT_URL";

    // If user is logged out
    if ( !is_user_logged_in() ) {
        $args = array(
            'redirect' => $custom_redirect
        );

        // Output the login form with arguments
        wp_login_form( $args );
    } 
    // Display below if user is logged in
    else {
        wp_loginout( home_url() ); // Display "Log Out" link.
        echo " | ";
        wp_register('', ''); // Display "Site Admin" link.
    }
?>

您可以將它包裝在custom_login_form()函數中,然后在自定義登錄頁面模板中調用該函數,或將其直接放在自定義登錄頁面模板中。 您可以命名自定義頁面模板page-login.php ,它將自動應用於名為“login”的WP頁面。

有關為登錄頁面創建自定義頁面模板的完整指南

自定義登錄表單的完整指南

暫無
暫無

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

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