繁体   English   中英

使用WP_Query传递某些过滤器时出现404错误,但其他过滤器没有

[英]404 error when passing certain filter with WP_Query, but not others

我有一个页面,我使用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的值进行硬编码,它就可以了。

什么想法可能会出错?

一些变量名称在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 );

我多次把头撞在桌子上,直到我一会儿想到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM