如何着手组合下拉列表/过滤查询?

时间:2013-09-25 作者:josh

我在这里搜索的时间不够了。(由于wordpress中的“过滤器”总是显示更多与内容相关的信息)。

无论如何,我的情况是:我Categories, Tags, AuthorsArchive 我的博客页面上的下拉列表(使用内置wordpress下拉功能(http://codex.wordpress.org/Function_Reference/wp_dropdown_categories, 例如)。

我希望能够组合这些过滤器;如果您选择一个类别Hats, 如果你选择Blue 从下拉列表中,您可以得到与两者匹配的任何内容BlueHats. (或者如果你选择一个月,你会得到匹配的帖子BlueHat 从您选择的月份。)

我知道一定有办法做到这一点。但我甚至想不出从哪里开始。(我肯定有一个插件可以做到这一点,我想看看,但我甚至找不到。)

所以如果有人对如何开始这项工作有任何想法,那将是惊人的。或者仅仅是一个示例插件,我可以查看它来收集一些信息(我真的很想自己编写这个插件,这样我就能理解发生了什么)。

1 个回复
SO网友:eskimo

首先,您可以创建自定义表单(我从未使用过wp\\U dropdown\\u categories)。提交表单时,它会获取输入变量并在查询中使用它们。

表单可能类似于:

<form action="http://example.com/resultspage" method="post">
<select name="categories">
   <option value="categoryname1"></option>
   <option value="categoryname2"></option>
   <option value="categoryname3"></option>
</select>
<select name="tags">
   <option value="tagname1"></option>
   <option value="tagname2"></option>
   <option value="tagname3"></option>
</select>
<select name="authors">
   <option value="authorname1"></option>
   <option value="authorname2"></option>
   <option value="authorname3"></option>
</select>
<select name="archives">
   <option value="archivesname1"></option>
   <option value="archivesname2"></option>
   <option value="archivesname3"></option>
</select>
</form>
然后在resultspage上

$category = $_POST[\'categories\'];
$tag = $_POST[\'tags\'];
$author = $_POST[\'authors\'];
$archive = $_POST[\'archives\'];

$args = array(
    \'category\' => $category,
    \'tag\' => $tag,
    \'author\' => $author,
    \'posts_per_page\' => -1 // Number of posts per page, -1 is show all 
);

$query = new WP_Query($args);
一些注释。首先,这没有经过测试。其次,检查codex on WP_Query 如何使用这些(和其他)参数,以及它们需要什么样的输入。例如,您可以使用\'tag\' 和输入标记slug,但您也可以使用\'tag_id\' 并使用标记ID作为输入。然后,您将更改标记选择字段的选项值。第三:我不知道你想对这些档案做什么。是否要显示某个月的帖子?这可以通过meta\\U查询实现(您可以在WP codex中找到文档)。

这是一个好的开始吗?如果成功了,请告诉我。

结束

相关推荐

从循环为WP_QUERY META_QUERY创建参数

我正在尝试创建一个WP\\u查询,其结果参数如下:$args = array( \'post_type\' => array( \'post\', \'custom\' ), \'meta_query\' => array( \'relation\' => \'AND\', array(\'key\' => \'key1\', \'value\' => \'value1\'),