[英]404 error when passing certain filter with WP_Query, but not others
I have a page where I am using new WP_Query
to display posts from a certain category, where the user can filter posts by year they were published. 我有一个页面,我使用new WP_Query
来显示某个类别的帖子,用户可以按发布年份过滤帖子。 Here's my code for the query: 这是我的查询代码:
if (isset($_GET['action'])){
$orderby = $_GET['orderby'];
$order = $_GET['order'];
$year = $_GET['year'];
}
$args = array(
'category_name' => 'films',
'orderby' => $orderby,
'order' => $order,
'year' => $year
);
$my_query = new WP_Query( $args );
I have a form where users can choose to filter posts by year: 我有一个表单,用户可以选择按年度过滤帖子:
<form class='post-filters'>
<select name="orderby">
<option value='date'>Order By Date</option>
<option value='title'>Order By Title</option>
</select>
<select name="order">
<option value='DESC'>Descending</option>
<option value='ASC'>Ascending</option>
</select>
<select name="year">
<option value=''>All</option>
<option value='2016'>2016</option>
<option value='2015'>2015</option>
</select>
<input type='submit' value='Filter!'>
</form>
Everything works fine, except when I try to select 2016 as a filter, where I get a 404 error. 一切正常,除非我尝试选择2016作为过滤器,我得到404错误。 There are posts for that year, and if I hard-code the value 2016 in the WP_Query, it works. 那一年有帖子,如果我在WP_Query中对2016的值进行硬编码,它就可以了。
Any ideas what could be going wrong? 什么想法可能会出错?
Some variable names are "reserved" in WordPress. 一些变量名称在WordPress中被“保留”。 $year
is one that will not work - same with $month
, $day
, etc. Change your select name to something like year_filter
and then: $year
是一个不起作用的 - 与$month
, $day
等相同。将您的选择名称更改为year_filter
,然后:
if (isset($_GET['action'])){
$orderby = $_GET['orderby'];
$order = $_GET['order'];
$year_filter = $_GET['year_filter'];
}
$args = array(
'category_name' => 'films',
'orderby' => $orderby,
'order' => $order,
'year' => $year_filter
);
$my_query = new WP_Query( $args );
I pounded my head against the desk many a times until I figured this out a while back. 我多次把头撞在桌子上,直到我一会儿想到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.