使用WordPress中的复选框过滤输出

时间:2013-12-23 09:28:13

标签: php jquery wordpress filter

我正在使用过滤功能在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

3 个答案:

答案 0 :(得分:2)

我认为问题在于表单方法,您在代码中使用$_POST但是通过添加特定表单method = "post",您可以在$_POST方法中使用它。

默认情况下,如果没有method属性,则会在提交表单时将您带到get方法。

答案 1 :(得分:1)

解决了我自己的问题。需要使用$ _GET而不是$ _POST。

答案 2 :(得分:0)

我认为问题在于表单方法,您在代码中使用$_POST但是通过添加特定表单method = "post",您可以在$_POST方法中使用它。

默认情况下,没有方法属性,它会在提交表单时将您带到get方法。

解决了我自己的问题。需要使用$_GET代替$_POST