强制用户登录主页

时间:2013-01-04 作者:Lucas Veiga

我有一个自定义的登录表单,可以在我的主视图上正常工作。美好的但我想要的是,当用户试图查看某个页面时,被重定向到我的主页视图,而不是wp登录。我正试图这样做:

add_action(\'template_redirect\', \'redirect_to_login\');

function redirect_to_login(){
 if(!is_user_logged_in()){
   wp_redirect(home_url()); exit;
 }
}
它不起作用了。浏览器表示重定向太多。我能做什么?

谢谢

2 个回复
最合适的回答,由SO网友:Mridul Aggarwal 整理而成

template_redirect 在每个页面加载(包括主页)时调用,因此即使用户访问主页,代码也会将用户重定向到主页

你可以在这里添加另一个条件,is_home()is_front_page(), 取决于admin中的设置,但我建议使用更长的方法以获得更好的兼容性

a) 钩入login_url 更改登录的url。这会告诉wordpress登录表单出现在主页上;wp-login.php 不应使用

add_filter(\'login_url\', \'change_login_url\');
function change_login_url() {
    return home_url(\'/\');
}
b)使用auth_redirect() 确保用户重定向回上一页wp 挂钩和非挂钩init 由于尚未设置$wp\\u query global,因此条件is\\u front\\u page()将不起作用。

add_action(\'wp\', \'force_user_login\');
function force_user_login() {
    if(!is_user_logged_in())
        auth_redirect();
}

SO网友:fuxia

添加其他条件:

if( ! is_user_logged_in() and ! is_home() ) {
    # redirect …
}

结束

相关推荐

更新USER_LOGIN以更改用户名

我正在尝试更新user_login 在wp_users 表,以强制在提交前端编辑配置文件表单时将用户的用户名更新到其电子邮件地址。我知道WordPress禁止通过wp_update_user 所以我尝试将SQL与wpdb函数一起使用。以下是我所拥有的,但它不起作用:(global $wpdb; $tablename = $wpdb->prefix . \"users\"; $sql = $wpdb->prepare( \"UPDATE \".$tablename.\" SET