将用户从后端重定向到前端

时间:2021-08-03 作者:Zoker

我想创建一个网站,普通用户只能访问前端。所以没有管理栏,每次他们尝试访问管理区域时,都会被重定向到frontpage。

我试着用这样的东西:

function redirect_non_admin_user(){
    if ( is_user_logged_in() && !current_user_can( \'administrator\' ) ) {
        wp_redirect( site_url() );
        exit;
    }
}
add_action( \'admin_init\', \'redirect_non_admin_user\' );
上面代码的问题是,用户现在甚至不能再发表评论了(我想,因为发表评论会向管理区域发出post请求,然后会重定向到前端)。

那么,有什么好的解决方案呢?让用户发表评论,但不要访问管理区域。谢谢

3 个回复
SO网友:ScottM

以下代码适合我,请尝试一下:

function no_dashboard() {
    $user = wp_get_current_user();
    if (in_array(\'subscriber\', (array)$user->roles)) {
        wp_redirect(site_url());
        exit;
    }
}
add_action(\'admin_init\', \'no_dashboard\');

SO网友:VKS

添加此on函数。php

function custom_blockusers_init() {
  if ( is_user_logged_in() && is_admin() && !current_user_can( \'administrator\' ) ) {
    wp_redirect( home_url() );
    exit;
  }
}
add_action( \'init\', \'custom_blockusers_init\' ); // Hook into \'init\'

SO网友:Zoker

我做了更多的测试,如果有$_POST[\'action\'] 修复了此问题:

function redirect_non_admin_user(){
    $action = $_POST[\'action\'];
    if ( is_user_logged_in() && !current_user_can( \'administrator\' ) && empty($action) ) {
        wp_redirect( site_url() );
        exit;
    }
}
add_action( \'admin_init\', \'redirect_non_admin_user\' );