我有一些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);
}
答案 0 :(得分:0)
您可以使用wordpress函数wp_redirect
函数重定向新页面或同一页面重新加载,还必须在exit(0)
函数后使用wp_redirect
函数。