Php 404使用WP_查询传递某些筛选器时出错,但不传递其他筛选器

Php 404使用WP_查询传递某些筛选器时出错,但不传递其他筛选器,php,wordpress,Php,Wordpress,我有一个页面,我正在使用newwp\u Query显示某个类别的帖子,用户可以按发布年份筛选帖子。以下是我的查询代码: if (isset($_GET['action'])){ $orderby = $_GET['orderby']; $order = $_GET['order']; $year = $_GET['year']; } $args = array( 'category_name' => 'films', 'orderby' =>

我有一个页面,我正在使用
newwp\u 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
2015
一切正常,但当我尝试选择2016作为过滤器时,出现404错误。那一年有帖子,如果我在WP_查询中硬编码2016的值,它会起作用

有什么问题吗?

有些变量名在WordPress中是“保留”的<代码>$year是一个不起作用的名称-与
$month
$day
等相同。请将您选择的名称更改为类似于
year\u 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 );
我曾多次把头撞在桌子上,直到不久前我才明白这一点。

有些变量名在WordPress中是“保留”的<代码>$year是一个不起作用的名称-与
$month
$day
等相同。请将您选择的名称更改为类似于
year\u 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 );

我曾多次把头撞在桌子上,直到不久前我发现了这一点。

刚刚试过,404不见了,但年份过滤器仍然不起作用-无论过滤器设置为什么,所有帖子都会显示出来。这里仍然缺少一些东西刚刚尝试了这个,404已经不存在了,但是年份过滤器仍然不起作用-无论过滤器设置为什么,所有帖子都会显示出来。这里还缺什么