Word语句中的自定义查询变量在if语句中表现得很奇怪

时间:2017-03-19 22:19:39

标签: php wordpress

我有一些php从WordPress自定义模板页面上的非WordPress数据库中引入数据。如果查询var不存在,我想使用php header函数重定向:

if (qv_isset('id')) {
  $id = urldecode($wp_query->query_vars['id']);
  $results = $fhr_db->query("SELECT Game.* WHERE Game.GameID=$id");
  if ($results->num_rows) {
    $game = $results->fetch_object();
    $results->free();
  } else {
    header("location: " . $site_url . "/games-admin/?msg=Error: No game with that ID.");
  }
} else {
  header("location: " . $site_url . "/games-admin/?msg=Error: No ID given.");
}

问题是当存在查询变量'id'时,则调用最后一个header()。如果我将最终的其他内容更改为:

else {
  echo "fire";
}

if内容将按原样运行,并且'fire'将不会被回显。只有在使用header()从同一页面重定向时才会发生这种情况,如下所示:

header("location: " . $site_url . "/game-edit/?id=$id&msg=Game added.");

我认为我使用标头功能不正确。有人可以解释为什么会发生这种情况,尤其是if else语句中的代码如何改变对条件的评估?

这是qv_isset函数:

function qv_isset($var_name) {
  $array = $GLOBALS['wp_query']->query_vars;
  return array_key_exists($var_name, $array);
}

1 个答案:

答案 0 :(得分:0)

您可以使用wordpress函数wp_redirect函数重定向新页面或同一页面重新加载,还必须在exit(0)函数后使用wp_redirect函数。