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后,它工作得很好。