【发布时间】:2015-10-06 11:24:10
【问题描述】:
我认为这很简单,但我不明白。 这是我的过滤器:
<form class='post-filters'>
<select name="filter">
<?php
$filter_options = array(
'houses' => 'Houses',
'hotels' => 'Hotels',
);
foreach( $filter_options as $value => $label ) {
echo "<option ".selected( $_GET['filter'], $value )." value='$value'>$label</option>";
}
?>
</select>
<input type='submit' value='Filter!'>
</form>
将过滤器应用于wordpress查询的相关PHP:
<?php
global $destinations;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$destinations = new WP_Query([
'paged' => $paged,
'location' => $location,
'category_name' => urldecode(get_query_var('filter')),
'posts_per_page' => 6
]);
?>
如果我确实选择了我的“过滤器”并且结果有六个以上的条目,我使用next_posts_link() 来查看接下来的六个结果。现在的问题是,如果我在第 2 页或第 3 页,而另一个过滤器的数量少于例如6 个条目,我在更改过滤器时将看不到任何结果。
如何在更改过滤器时清除 get 变量 (/page/2/)?
例子:
category/subcategory/subsubcategory/page/3/?filter=houses
现在我选择“过滤”酒店
category/subcategory/subsubcategory/page/3/?filter=hotels
并且“/page/3”不会被清除。所以有些帖子我看不到。
【问题讨论】:
-
将表单的
action设置为帖子的根 URL(过滤结果的第一页) -
好点,我错过了。如何使用 Wordpress 方法获取当前 URL?我目前正在尝试
remove_query_arg()和home_url( $wp->request ) -
你能分享一个完整的示例网址吗?
-
@rnevius,我添加了一个例子!
标签: filter pagination wordpress