我在Wordpress中有一个生成表单的php文件,它调用一个自定义函数来获取用户数据以填充表单。如果没有找到用户,该函数会正常运行(返回"无效用户名"),但如果用户有效,则不会执行该函数。要点如下:
function print_report($username, $var2, $var3)
{
$user = get_user_by('login', $username);
if($user) {
//get all the information and create the form
}
else echo "invalid username";
return false;
}
看起来,当找到一个有效的用户时,它不会遍历函数,而是直接跳到最后。换句话说,如果用户是有效的,则返回"false"。
我希望我已经解释好了。如果你需要其他信息,请告诉我。
编辑
我按照建议做了var_dump()
。它找到用户,但仍然返回false。这是我的测试用户的结果:
string 'jimv3000' (length=8)
object(WP_User)[1610]
public 'data' =>
object(stdClass)[1634]
public 'ID' => string '1101' (length=4)
public 'user_login' => string 'jimv3000' (length=8)
public 'user_pass' => string '*THERE IS A PASSWORD HERE*' (length=34)
public 'user_nicename' => string 'jimv3000' (length=8)
public 'user_email' => string '*THERE IS AN EMAIL HERE*' (length=18)
public 'user_url' => string '' (length=0)
public 'user_registered' => string '2016-05-16 20:37:30' (length=19)
public 'user_activation_key' => string '' (length=0)
public 'user_status' => string '0' (length=1)
public 'display_name' => string 'jimv3000' (length=8)
public 'ID' => int 1101
public 'caps' =>
array (size=1)
'subscriber' => boolean true
public 'cap_key' => string 'wp_capabilities' (length=15)
public 'roles' =>
array (size=1)
0 => string 'subscriber' (length=10)
public 'allcaps' =>
array (size=3)
'read' => boolean true
'level_0' => boolean true
'subscriber' => boolean true
public 'filter' => null
false
一如既往,我们会感谢您的帮助。
是否看到PHP条件,是否需要括号
你的else语句周围没有括号,这意味着当你的函数在用户存在时进入if语句时,它会执行你让它做的任何事情,然后从底部掉出来,执行你的return false语句。
如果只想在找不到用户时返回false,则需要在else语句周围加上大括号。
您可能希望无论如何都添加它们,以使代码更加清晰。这样可以更容易地发现这类问题。
试试这个
function print_report($username, $var2, $var3)
{
$user = get_user_by('login', $username);
if($user) {
//get all the information and create the form
}
else { echo "invalid username";
return false; }
}