创建表单的Wordpress函数返回False


Wordpress Function to Create Form Returns False

我在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; }
 }