2017-03-19 14 views
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); 
} 

答えて

0

あなたが新しいページまたは同じページのリロードのリダイレクトのためのワードプレスの機能wp_redirect機能を使用することができますし、またwp_redirect関数の後exit(0)機能を使用する必要があります。