仅允许非登录用户访问登录页面和密码重置页面

时间:2017-08-21 作者:Vucko

如果用户想要访问任何其他页面,但要访问登录页面和密码重置页面,我如何重定向用户?

我的登录页面实际上是我的主页,如果他们没有登录,我想将他们全部重定向到登录页面。也允许他们在忘记密码时重置密码。

谢谢

3 个回复
最合适的回答,由SO网友:butlerblog 整理而成

您指出您的登录页是您的主页。如果希望所有未登录的用户都被引导到主页进行登录,则需要检查以下几项:

用户是否已登录您可以使用is_user_logged_in() 并且是\\u front\\u page()。如果这些都不是真的,那么您可以使用wp_redirect() 将用户重定向到主页。

假设忘记密码页面为“页面”,则可以使用is_page() 在你的逻辑中也是如此。

您需要将其挂接到一个操作,以便它触发的时间足够晚,以允许检查页面,但时间足够早,以仍然安全地重定向用户(即在发送标题之前)。template_redirect 是这方面的理想选择。

add_action( \'template_redirect\', \'my_frontpage_redirect\' );
function my_frontpage_redirect() {
    if ( ! is_user_logged_in() ) {
        if ( ! is_front_page() && ! is_page( \'my-password-reset\' ) ) {
            wp_redirect( home_url() );
            exit();
        }
    }
}
调整中的缓动阀is_page() 根据页面slug的内容调用密码重置。

SO网友:Fabio Marzocca

您可以在中添加重写规则。htaccess,检查未登录的用户,并将其重定向到主页:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule . /index.php [NC]
在您的登录页面上,您应该提供一个链接来重置忘记的密码。

SO网友:Rick Hellewell

在设置中,阅读,启用“仅对此网站的注册用户可见”按钮。所有网站访问者都将看到登录页面。

登录后,用户将被引导到其用户配置文件页面。您可以使用类似的代码更改重定向,这将重定向到站点的主页。(在您的情况下,您需要将主页更改为其他内容,这样他们就不需要登录两次。)

function go_here_after_login( $redirect_to, $request, $user ) { 
    if (current_user_can( \'manage_options\' )) {return $redirect_to;}
    else {return home_url();}

    return;
}
add_filter (\'login_redirect\', \'go_here_after_login\', 10, 3);
有很多关于如何更改登录屏幕的google。

请注意,您可以使用htaccess要求登录,但此方法允许您使用站点上的WP用户帐户。

结束

相关推荐