2
WordPressカスタムテンプレートページのWordPress以外のデータベースからデータを取り込むPHPがあります。私は、クエリvarが同様に存在しない場合は、PHPヘッダー機能を使用してリダイレクトする:WordPressの奇妙な動作をするif文のカスタムクエリ変数
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」、そして最後のヘッダは、()がある場合に問題があります。最終的なelseの内容を次のように変更した場合:
ifコンテンツは正しく実行され、 'fire'はエコーされません。このように同じページから)(ヘッダをリダイレクトするときにのみ発生:
header("location: " . $site_url . "/game-edit/?id=$id&msg=Game added.");
私はイムが誤ったヘッダ機能を使用してだと思います。誰かが、なぜこれが起こっているのか、特にelse文の中のコードがどのように条件の評価を変えることができるのかを説明できますか?
これはqv_isset機能である:
function qv_isset($var_name) {
$array = $GLOBALS['wp_query']->query_vars;
return array_key_exists($var_name, $array);
}