2016-06-26 6 views
-2

내 웹 사이트에서 사용자가 두 범주 목록 내에서 하나의 범주를 선택할 수 있도록 범주 필터를 만들려고합니다. 한 목록은 "영역"이라고하고 다른 목록은 "비즈니스 유형"이라고합니다. 양식에서 제출 버튼을 클릭하면 페이지가 새로 고쳐지고 사용자가 선택하는 범주의 게시물 만 표시됩니다. 다음은 전체 코드입니다.여러 매개 변수가있는 집합

$zones = get_field('zones_list'); 
$business_types = get_field('business_type'); 

echo'<form role="search" method="post" id="searchform"> 
    <div>'; 
    foreach($zones as $zone): 
     echo'<input type="radio" value="'.$zone->slug.'" name="zone_list[]">'.$zone->name.'</input>'; 
    endforeach; 
    echo'</div> 
    <div>'; 
    foreach($business_types as $business_type): 
     echo'<input type="radio" value="'.$business_type->slug.'" name="business_type[]">'.$business_type->name.'</input>'; 
    endforeach; 
    echo'</div> 
    <input type="submit" id="searchsubmit" value="Submit" /> 
</form>'; 

if(isset($_POST['zone_list'])) { 
    $list_name = $_POST['zone_list']; 
    $list_formated = implode('+', $list_name); 
} else if (isset($_POST['business_type'])) { 
    $list_name = $_POST['business_type']; 
    $list_formated = implode('+', $list_name); 
} else if (isset($_POST['zone_list'], $_POST['business_type'])) { 
    $list_name_1 = $_POST['zone_list']; 
    $list_name_2 = $_POST['business_type']; 
    $list_both = array_merge($list_name_1,$list_name_2); 
    $list_formated = implode('+', $list_both); 
} else {} 

$args = array(
     'post_type' => 'post', 
     'orderby' => 'date', 
     'category_name' => $list_formated, 
     'order' => 'DESC', 
     'posts_per_page'=> '3', 
     'paged' => get_query_var('paged'), 
    ); 
     global $wp_query; 
     $wp_query = new WP_Query($args); 
     if($wp_query->have_posts()): 
     while($wp_query->have_posts()): $wp_query->the_post(); global $post; 

지금 양식 필터는 하나의 카테고리 목록에서 하나의 카테고리를 선택하는 경우에만 작동합니다. 각 목록에 하나씩 두 개의 범주를 선택하면 필요한 것이므로 NULL을 반환합니다. 난 그냥 PHP를 배우고, 그래서이 일을 더 나은 방법이있을 수 있습니다

else if (isset($_POST['zone_list'], $_POST['business_type'])) { 
    $list_name_1 = $_POST['zone_list']; 
    $list_name_2 = $_POST['business_type']; 
    $list_both = array_merge($list_name_1,$list_name_2); 
    $list_formated = implode('+', $list_both); 
} else {} 

을, 그러나 이것은 내가 지금까지 찾은 유일한 솔루션입니다 : 나는 오류가 여기에있다 생각합니다. 내가 얻을 수있는 도움에 정말 감사드립니다.

답변

-1

당신은 이런 식으로 쓸 수

(는 isset가 ($이 _ POST는 [ '존 목록']) & &는 isset가 ($이 _ POST는 [ 'business_type는'])이)가 {

& & 모두 issets가해야 함을 의미하는 경우 진실 해. & & 또는 같은 것을 쓸 수 있습니다.

+0

나는 이것을 시도했지만 여전히 작동하지 않는다. 왜 그런지는 모르겠지만 웬일인지 그 조건을 결코 실행하지 않습니다. – Ozzigity

+0

두 범주를 선택하면 첫 번째 조건 만 실행됩니다. – Ozzigity

+0

'첫 번째 진술이 사실이라면 다른 것은 작동하지 않기 때문입니다. if-elseif-else를 별도의 if-else 구문으로 분할하십시오. –

관련 문제