나는 필터 기능을 사용하여 WordPress에 페이지를 구축하고 있습니다. 기본적으로 체크 상자를 클릭하면 데이터의 출력을 변경하고 싶습니다. 지금 가지고있는 것 :WordPress의 체크 박스로 출력 필터링하기
<form class="compo-filter">
<input type="checkbox" name="compo-cat" value="indoor" onclick="if(this.checked){this.form.submit();}" />Indoor
<input type="checkbox" name="compo-cat" value="outdoor" onclick="if(this.checked){this.form.submit();}" />Outdoor
<input type="checkbox" name="compo-cat" value="men" onclick="if(this.checked){this.form.submit();}" />Men
<input type="checkbox" name="compo-cat" value="women" onclick="if(this.checked){this.form.submit();}" />Women
<input type="checkbox" name="order" value="order" onclick="if(this.checked){this.form.submit();}" />Show only competitions currently in progress
</form>
<?php
$today = date('Y-m-d');
$args = array(
'post_type' => 'competitions',
'posts_per_page' => 10,
'meta_key' => 'startdate',
'meta_compare' => '>=',
'meta_value' => $today,
'orderby' => 'startdate',
'order' => 'ASC'
);
$args2 = array(
'post_type' => 'competitions',
'posts_per_page' => 10,
'meta_key' => 'startdate',
'orderby' => 'startdate',
'order' => 'ASC'
);
if ($_POST['order'] == 'order') {
$query = new WP_Query($args2);
} else {
$query = new WP_Query($args);
}
if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); ?>
위의 해결 방법은 효과가 없으며 잘못된 점을 해결할 수 없습니다. 페이지가 다시로드되고 URL에 선택한 값 /?order=order
이 표시됩니다.
답장을 보내 주셔서 감사합니다. 장래에 사람들을 도울 수 있습니다. '$ _POST' (사용자가 볼 수있는 추악한 쿼리 문자열이 없으므로 일반적으로 더 바람직하다)를 사용하고자한다면,'
문자열을 공개적으로 볼 수 없기 때문에이 솔루션이 실제로 더 좋습니다. –
좋은 소식입니다. 또 다른 일반적인 기술은 필요한 작업을 수행 한 다음 해당 페이지로 사용자를 리디렉션하는 처리기 (보이지 않는 페이지)에 양식을 POST하는 것입니다. 이는 게시물을 예를 들어 업데이트하는 경우에 특히 유용합니다. 이것에 대한 주된 이유는 보안이다. 그래서 만약 당신이 어떤 데이터베이스 쓰기 나 이와 유사한 것을하지 않는다면, 적용되지 않을 수도 있지만, 미래를 알면 좋을 것이다. –