Php Pre_Get_帖子未根据自定义字段(价格)对类别帖子进行排序
我对下面的代码一直有奇怪的问题。出于某种原因(超出我的理解),pre_get_posts()似乎没有根据自定义字段对帖子进行排序。有什么问题吗?下面是我从functions.php获得的pre_get_post()函数代码Php Pre_Get_帖子未根据自定义字段(价格)对类别帖子进行排序,php,html,wordpress,Php,Html,Wordpress,我对下面的代码一直有奇怪的问题。出于某种原因(超出我的理解),pre_get_posts()似乎没有根据自定义字段对帖子进行排序。有什么问题吗?下面是我从functions.php获得的pre_get_post()函数代码 function alter_main_query($query) { if (is_admin()){ return; } if ($query->is_category() && $query->is_m
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
奇怪的是,无论默认sorttype设置为什么,它都只在第一次工作。之后,它似乎只是以某种随机方式排序
他们已经花了超过24小时试图解决这个问题,但迄今为止的努力都是徒劳的
任何帮助都将不胜感激。您能否先尝试更改此设置
$SortType = 1;
if(isset($_POST["sorttype"])) {
$SortType = $_POST["sorttype"];
}
由此
if(isset($_POST["sorttype"]))
{
$SortType = $_POST["sorttype"];
}
else
{
$SortType=1;
}
你能先改变一下吗
$SortType = 1;
if(isset($_POST["sorttype"])) {
$SortType = $_POST["sorttype"];
}
由此
if(isset($_POST["sorttype"]))
{
$SortType = $_POST["sorttype"];
}
else
{
$SortType=1;
}
哈啰,埃夫拉德,你不知道这两者的区别吗?如果你能帮我理解,我会很感激的?还有,你知道为什么pre_get_post()排序不正确吗?你好,Evrard,你真的不知道两者之间的区别吗?如果你能帮我理解,我会很感激的?还有,你知道为什么pre_get_post()排序不正确吗?