내 웹 사이트에서 사용자가 두 범주 목록 내에서 하나의 범주를 선택할 수 있도록 범주 필터를 만들려고합니다. 한 목록은 "영역"이라고하고 다른 목록은 "비즈니스 유형"이라고합니다. 양식에서 제출 버튼을 클릭하면 페이지가 새로 고쳐지고 사용자가 선택하는 범주의 게시물 만 표시됩니다. 다음은 전체 코드입니다.여러 매개 변수가있는 집합
$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 {}
을, 그러나 이것은 내가 지금까지 찾은 유일한 솔루션입니다 : 나는 오류가 여기에있다 생각합니다. 내가 얻을 수있는 도움에 정말 감사드립니다.
나는 이것을 시도했지만 여전히 작동하지 않는다. 왜 그런지는 모르겠지만 웬일인지 그 조건을 결코 실행하지 않습니다. – Ozzigity
두 범주를 선택하면 첫 번째 조건 만 실행됩니다. – Ozzigity
'첫 번째 진술이 사실이라면 다른 것은 작동하지 않기 때문입니다. if-elseif-else를 별도의 if-else 구문으로 분할하십시오. –