我有一个页面,在那里我使用new WP_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 );
我有一个表单,用户可以选择按年份过滤帖子:
<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>
一切正常,除了当我尝试选择2016作为过滤器时,我得到了一个404错误。有针对那一年的帖子,如果我在WP_Query中硬编码2016年的值,它就可以工作。
你知道会出什么问题吗?
发布于 2017-02-15 21:05:51
一些变量名在WordPress中是“保留的”。$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 );
我把头撞在桌子上很多次,直到不久前我才明白。
https://stackoverflow.com/questions/42259948
复制