簡體   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