1
我一直有奇怪的問題,下面的代碼。出於某種原因(超出我的理解),pre_get_posts()似乎不是基於自定義字段對帖子進行排序。任何想法可能是什麼問題?下面是我的函數function.php中的pre_get_post()函數代碼。Pre_Get_Posts不根據自定義字段排序類別帖子(價格)
function alter_main_query($query) {
if (is_admin()){
return;
}
if ($query->is_category() && $query->is_main_query()) {
$SortType = 1;
if(isset($_POST["sorttype"])) {
$SortType = $_POST["sorttype"];
}
//default sorting is by availability in no of stores
if ($SortType == 0) {
$meta_query = array(
array(
'key' => 'Lowest',
'value' => 0,
'compare' => '>'
)
);
$query->set('meta_query', $meta_query);
$query->set('meta_key', 'NoOfStoresAvailable');
$query->set('orderby', 'meta_value_num');
$query->set('order', 'DESC');
} else if ($SortType == 1) {
$meta_query = array(
array(
'key' => 'Lowest',
'value' => 0,
'compare' => '>'
)
);
$query->set('meta_query', $meta_query);
$query->set('orderby', 'meta_value_num');
$query->set('meta_key', 'Lowest');
$query->set('order', 'DESC');
} else if ($SortType == 2) {
$meta_query = array(
array(
'key' => 'Lowest',
'value' => 0,
'compare' => '>'
)
);
$query->set('meta_query', $meta_query);
$query->set('orderby', 'meta_value_num');
$query->set('meta_key', 'Lowest');
$query->set('order', 'ASC');
} else if ($SortType == 3) {
$meta_query = array(
array(
'key' => 'Lowest',
'value' => 0,
'compare' => '>'
)
);
$query->set('meta_key', 'AvgRatings');
$query->set('orderby', 'meta_value_num');
$query->set('order', 'DESC');
}
}
return $query;
}
注:我有一個允許用戶選擇他/她希望(1 =價格前高後低,2 =價格從低到高,3 =平均排序什麼網站上的下拉評級),並使用post方法將選定的排序值傳遞給表單。如果沒有值傳遞,它將在上述函數中默認爲sorttype = 0。
而奇怪的是,它只在第一次爲任何默認排序類型設置。之後,它似乎以某種隨機的方式排序。
已經花了超過24小時試圖解決這個問題,但迄今爲止的努力已經徒勞無功。
任何幫助將不勝感激。
您好機Evrard,並沒有真正得到兩者之間的區別?如果你能幫助我理解它,會感激嗎?還有關於爲什麼pre_get_post()沒有正確排序的任何想法? – Jaswant