如何使用复选框通过自定义分类术语显示帖子?

时间:2013-04-26 作者:Mike

我想要一张有复选框的表格。每个复选框都是我的分类法“城市”的一个术语。其想法是,如果用户选中任何复选框,它应该显示所有NOT 以标记的方式。

如果我有此代码:

$args[\'tax_query\'] = array(
    array(
        \'taxonomy\' => \'cities\',
        \'terms\' => array(\'Boston\', \'Chicago\'),
        \'field\' => \'slug\',
        \'operator\' => \'NOT IN\',
    ),
);
query_posts($args);
如何将复选框值传递给terms数组?我的意思是,改变:

\'terms\' => array(\'Boston\', \'Chicago\'),
收件人:

\'terms\' => array(VALUE CHECKBOX 1, VALUE CHECKBOX 2),
谢谢。

1 个回复
最合适的回答,由SO网友:montrealist 整理而成

可以使用tax_query 排除某些分类术语的参数。看见this answer.

至于在何处运行查询,您可以让一个表单提交到它所在的页面(您需要找到为该页面调用的适当模板文件或创建一个自定义模板文件),然后在页面刷新后,处理表单输入,运行查询,并显示结果。

或者,您可以在服务器端运行查询,并通过AJAX调用它。欲了解更多信息,请开始here (它讲的是插件,但您实际上不需要创建插件,您可以随时将PHP代码放入functions.php 或者在WordPress中搜索关于实现AJAX的教程。

EDIT: 根据您的评论,这里有一些代码可以从页面上的复选框中获取值。它未经测试,仅供参考。请注意,表单是自己提交的,我们通过将页面URL放入表单的action 参数

<?php
$cb_city = \'\';
if(isset($_POST[\'city\']) && $_POST[\'city\'] != \'\') { // if form was submitted we can get value
    $cb_city = $_POST[\'city\'];
}
?>
<form action="<?php echo get_permalink(); ?>" method="POST">
    <label>Your label
        <?php
            $checked = "";
            if( !empty($cb_city) ){ // pre-populate checkboxif it was checked on form submit
                $checked = "checked";
            }
        ?>
        <input <?= $checked; ?> type="checkbox" name="city" id="city" value="1"/>
    </label>
    <button type="submit" class="btn-submit">Submit</button>
</form>

结束