2017-02-15 68 views
1

我有一個頁面,我正在使用new WP_Query來顯示某個類別的帖子,用戶可以按發佈年份過濾帖子。這裏是我的查詢代碼:通過WP_Query過濾某些過濾器時出現404錯誤,但不是其他過濾器

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的值進行硬編碼,它就可以工作。

任何想法可能會出錯?

回答

0

一些變量名稱在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); 

我敲打我的頭靠在桌子許多次,直到我想通了這一點一一段時間以前。

+0

剛剛試過這個,404消失了,但年份過濾器仍然不起作用 - 無論過濾器設置爲什麼,都會顯示所有帖子。仍然在這裏失蹤 –