WordPress上的自定义PHP代码会阻止整个页面内容

h7wcgrx3  于 12个月前  发布在  WordPress
关注(0)|答案(1)|浏览(306)

我正在为我的WordPress网站创建一个简单的代码,重定向任何未登录到页面的人,它看起来像这样:

<?php 

global $current_user;

$currentuserid = $current_user->ID;

if( $currentuserid > 0 ){ 

} else {
    wp_redirect( 'https://site/?error=unauthorized' );
    }
    exit;
?>

字符串
代码工作正常,但我面临的问题是,当我将其添加到WordPress网站使用插件,如“插入代码片段”,当代码运行时,它阻止了整个页面内容,我不希望发生这种情况。
例如,当用户登录时,这段代码不应该做任何事情,它会显示一个白色页面。你知道如何修复这个问题或者是什么导致了这个问题吗?

iibxawm4

iibxawm41#

你的exit()在else的右括号外,所以每次都运行它。文档见here
注意:wp_redirect()不会自动退出,并且几乎总是要跟一个exit调用;
您需要:

$currentuserid = $current_user->ID;
if ($currentuserid > 0) { 
} else {
    wp_redirect('https://site/?error=unauthorized');
    exit;
}

字符串
或者更好的方法是,反转if语句,这样就不会有空条件,并使用null合并运算符,这样就不必使用临时变量来保存id:

if ($current_user->ID ?? 0 <= 0) { 
    wp_redirect('https://site/?error=unauthorized');
    exit;
}

相关问题