2016-04-21 4 views
0

У меня есть следующий код: -PHP - если оператор с несколькими значениями

<ul class="grid effect-2" id="grid"> 

    <?php 
    if(have_rows('gallery')): 
     while (have_rows('gallery')) : the_row(); ?> 

      <?php 
      $image_location = get_sub_field('image_location'); 

      if (empty($_GET['filter'])) { 
       $image_filter = $image_location == 'Nottingham' || $image_location == 'Corby'; 
      } else { 
       $image_filter = $image_location == $_GET['filter']; 
      } 

      ?> 

      <?php 
      if($image_filter) { 
      ?> 

       <li><a class="fancybox" rel="gallery" href="<?php the_sub_field('image'); ?>" title="<?php echo $image_location . ' @ Planet Bounce ' . get_sub_field('image_location'); ?>"><img src="<?php the_sub_field('image'); ?>" alt="<?php echo get_sub_field('image_caption') . ' @ Planet Bounce ' . $image_location; ?>" /></a></li> 

      <?php } ?> 

     <?php endwhile; 
    else : endif; 
    ?> 

</ul> 

$ image_location может быть либо «Ноттингем» или «Corby» или обоих. Фильтр изображения в основном фильтрует изображения, которые отображаются.

Хотя приведенный выше код работает, я не думаю, что это правильно.

Если кто-нибудь может помочь мне с лучшей практикой сделать тот же запрос, который будет высоко оценен.

Если вам нужно, чтобы я объяснил более подробно, пожалуйста, дайте мне знать.

ответ

1

Условие может быть обернуто в два кода лайнера с использованием массива.

$imageFilters = array('Nottingham'=>'Nottingham', 'Corby'=>'Corby'); 
$image_filter = isset($imageFilters[$_GET['filter']]) ? $imageFilters[$_GET['filter']] : $_GET['filter']; 
Смежные вопросы