2016-12-21 4 views
2

J'ai ce code pour vérifier si les chaînes de requête sont présentes et les contenus d'écho basés sur les valeurs.Vérifie si les Querystrings ne sont pas visibles sur l'url

Le code fonctionne si:

www.mywebsite.com/?position=&category=&country= 
www.mywebsite.com/?position=position1&category=&country= 
www.mywebsite.com/?position=&category=category1&country= 
www.mywebsite.com/?position=&category=&country=country1 
www.mywebsite.com/?position=&category=category1&country=country 
. 
. 
and so forth. 

mais si l'URL est juste www.mywebsite.com sans querystring le parent bloc d'autre n'est pas exécuté.

Mon code actuel est:

<?php 
// args 
    if ($_GET){ 
     if ($_GET['category'] && $_GET['country']) { 
      $args = array(
      'numberposts' => -1, 
      'post_type'  => 'job_order', 
      'meta_query' => array(
       'relation'  => 'AND', 
       array(
        'key'  => 'j_category', 
        'value'  => $_GET['category'], 
        'compare' => '=' 
       ), 
       array(
        'key'  => 'j_country', 
        'value'  => $_GET['country'], 
        'compare' => '=' 
        ) 
       ) 
      ); 
     } elseif ($_GET['category']) { 
      $args = array(
       'numberposts' => -1, 
       'post_type'  => 'job_order', 
       'meta_key'  => 'j_category', 
       'meta_value' => $_GET['category'] 
       ); 
     } elseif ($_GET['country']) { 
      $args = array(
       'numberposts' => -1, 
       'post_type'  => 'job_order', 
       'meta_key'  => 'j_country', 
       'meta_value' => $_GET['country'] 
      ); 
     } else { 
      $args = array(
       'numberposts' => -1, 
       'post_type'  => 'job_order' 
       ); 
     } 
    } else{ 
     $args = array(
      'numberposts' => -1, 
      'post_type'  => 'job_order' 
      ); 
    } 
    // query 
    $the_query = new WP_Query($args); 
    if($the_query->have_posts()): 
    while($the_query->have_posts()) : $the_query->the_post(); 
?> 
+0

et vous ne cherchez pas de position dans votre code, donc ce n'est pas pertinent dans la question. –

Répondre

0

Essayez ceci:

if ($_GET){ 
     if (isset($_GET['category']) && isset($_GET['country'])) { 
      $args = array(
      'numberposts' => -1, 
      'post_type'  => 'job_order', 
      'meta_query' => array(
       'relation'  => 'AND', 
       array(
        'key'  => 'j_category', 
        'value'  => $_GET['category'], 
        'compare' => '=' 
       ), 
       array(
        'key'  => 'j_country', 
        'value'  => $_GET['country'], 
        'compare' => '=' 
        ) 
       ) 
      ); 
     } elseif (isset($_GET['category'])) { 
      $args = array(
       'numberposts' => -1, 
       'post_type'  => 'job_order', 
       'meta_key'  => 'j_category', 
       'meta_value' => $_GET['category'] 
       ); 
     } elseif (isset($_GET['country'])) { 
      $args = array(
       'numberposts' => -1, 
       'post_type'  => 'job_order', 
       'meta_key'  => 'j_country', 
       'meta_value' => $_GET['country'] 
      ); 
     } 
    } else{ 
     $args = array(
      'numberposts' => -1, 
      'post_type'  => 'job_order' 
      ); 
    } 

Vous ne recevez pas passé les instructions conditionnelles imbriquées. Le dernier est exécuté dès qu'il n'y a plus de chaîne de requête.

Et vous devriez vérifier si la valeur est définie avant de l'obtenir.