Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress无法识别已登录的用户_Php_Wordpress - Fatal编程技术网

Php Wordpress无法识别已登录的用户

Php Wordpress无法识别已登录的用户,php,wordpress,Php,Wordpress,我有一个自定义页面模板,只有某些用户角色才能访问。如果访问者未登录或不属于指定角色,他将被重定向到登录页面 问题是,如果用户在登录前尝试访问此页面,他会被重定向(登录后)-只有在清除浏览器数据并重新登录后,问题才会得到解决。如果用户先登录,然后尝试访问页面,则不会发生这种情况 function ts_restrict_user_access() { if ( is_page_template( 'templates/ts-sample.php' ) ) { $redi

我有一个自定义页面模板,只有某些用户角色才能访问。如果访问者未登录或不属于指定角色,他将被重定向到登录页面

问题是,如果用户在登录前尝试访问此页面,他会被重定向(登录后)-只有在清除浏览器数据并重新登录后,问题才会得到解决。如果用户先登录,然后尝试访问页面,则不会发生这种情况

function ts_restrict_user_access() {

    if ( is_page_template( 'templates/ts-sample.php' ) ) {

        $redirect = true;

        if ( is_user_logged_in() ) {

            $user = wp_get_current_user();

            if ( in_array( 'worker', (array) $user->roles ) || in_array( 'administrator', (array) $user->roles )) {
                $redirect = false;
            }
        } 

        if ( $redirect ) {
            wp_redirect( esc_url( home_url( '/login' ) ), 301 );
       }

    }
}

如果您正在使用任何缓存插件,请禁用它,然后让您的代码再试一次

我简化了你的代码,请看下面

function ts_restrict_user_access() {
    if ( is_page_template( 'templates/ts-sample.php' ) && is_user_logged_in() ) {
        $user = wp_get_current_user();
        $allowed_roles = array('worker', 'administrator');
        if (!array_intersect($allowed_roles, $user->roles ) {
            wp_redirect( esc_url( home_url( '/login' ) ), 301 );
        }
    }
}

您是否使用某种缓存响应的缓存插件?另外,我认为您不需要$redirect变量和逻辑来处理它。谢谢。除了我正在构建的插件之外,我没有任何活动插件,但是,我正在使用这个片段从插件中进行模板制作:谢谢。我没有任何活动插件,除了我正在构建的插件之外,但是,我正在使用这个片段从插件中模板化:愚蠢的错误耗费了我很多时间--在将重定向更改为302后,它工作得很好。