Почему «if statement» должен «die ()», иначе не работает?

if ($_GET['api'] == 'json' && isset($_GET['id'])) { $post = get_post($_GET['id']); // $post contains the post object header("content-type: application/json"); echo json_encode($post); } die(); 

Этот код работает, но если я хочу его расширить, он не будет работать. Во втором случае (ниже), если я напишу
?second=case&id=204 на url i get Unexpected но если я пишу ?first=case&id=204 Я получаю запрос

 if (isset($_GET['api'])) { if ($_GET['first'] == 'case' && isset($_GET['id'])) { // $query is the WP_Query Object $post = get_post($_GET['id']); // $post contains the post object header("content-type: application/json"); echo json_encode($post); } if ($_GET['second'] == 'case' && isset($_GET['id'])) { // $query is the WP_Query Object $post = get_post($_GET['id']); // $post contains the post object header("content-type: application/json"); echo json_encode($post); } die(); } 

Скорее всего, это просто потому, что $_GET['first'] не определяется при попытке ?second=case&id=204 .

Вместо этого попробуйте этот КОД (при условии, что first и second не могут появляться одновременно):

 if (isset($_GET['api'])) { if (isset($_GET['first']) && $_GET['first'] == 'case' && isset($_GET['id'])) { // $query is the WP_Query Object $post = get_post($_GET['id']); // $post contains the post object header("content-type: application/json"); echo json_encode($post); } else if (isset($_GET['second']) && $_GET['second'] == 'case' && isset($_GET['id'])) { // $query is the WP_Query Object $post = get_post($_GET['id']); // $post contains the post object header("content-type: application/json"); echo json_encode($post); } die(); }