将用户重定向到前端wp登录页面

时间:2014-06-12 作者:kalyan

我的主题允许我在普通博客页面中创建前端登录表单。现在,我希望将所有用户重定向到该页面,而不是wp-login.php. 我使用了下面的代码片段。

function redirect_login_page(){
   $page_viewed = basename($_SERVER[\'REQUEST_URI\']);
   // Where we want them to go
   $login_page  = \'http://localhost.com/login/\';
   if( $page_viewed == "wp-login.php" && $_SERVER[\'REQUEST_METHOD\'] == \'GET\') {
     wp_redirect($login_page);
     exit();
   }
}
add_action(\'init\',\'redirect_login_page\');
但问题是,它只会重定向wp-login.php 页如果我们wp-admin, (例如。http://localhost.com/wp-admin/) 它不会重定向。相反,这需要wp-login.php 页码(我不想要)

有什么建议吗?

2 个回复
SO网友:BVRoc

我的做法是相同的,但略有不同,并处理登录普通用户或管理员的情况。我假设你知道把这些东西放在你的;功能。php“;或同等产品。

add_filter(\'login_url\', \'your_login_url\', 10, 2 );
add_action(\'login_init\', \'your_login_page\');
add_action(\'wp_login\', \'your_login_redirect\', 10, 2);



// assuming that your new front end login url is "/login", use these:
function your_login_url($login_url, $redirect) {
    return home_url(\'/login/\');
}

function your_login_page() {
    wp_redirect(home_url(\'/login/\'), 302);
}

// if admin send them to the dashboard, otherwise leave them on the frontend
function your_login_redirect($user_login, $user) {

    if  (current_user_can(\'activate_plugins\')) {
            wp_redirect(\'/wp-admin/index.php\', 302);
            exit();
    }
}
最后,如果您想在前端处理密码重置(实际的处理代码有点复杂),那么可以使用以下过滤器:

add_filter(\'lostpassword_url\', \'your_lost_password_page\', 10, 2);
在通过表单收集用户电子邮件地址后,您必须发送一封带有一次性使用链接的重置电子邮件,然后提供该链接的验证,以及允许用户重置其密码的另一个表单。(并可能验证文本)。每个页面也需要某种响应消息。

SO网友:engelen

解决这个问题的一个好办法是login_init, 在输出任何内容之前触发wp-login.php.

add_action( \'login_init\', \'wpse149411_login_redirect\' );

function wpse149411_login_redirect() {
    wp_redirect( site_url( \'/login/\' ) );
    exit;
}

结束

相关推荐

如何使用过滤器“SIDAAR_LOGIN_WIDGET_FORM_ARGS”

我需要使用Sidebar\\u Login\\u widget\\u form\\u args“过滤器重命名侧栏登录表单上的一些标签;我已经尝试了几天,但没有成功。如果有人能给我指出正确的方向,我将不胜感激。具体来说,我需要将“登录->”按钮重命名为“登录”,将“用户名”重命名为“用户名:”并将“密码”重命名为“密码”:以下是我的代码,但它不起作用:/* Sidebar Login Plugin - Change Form Labels add_filter( \'sidebar_login