2
我需要一些帮助的search.php中的排序结果订单结果witin的search.php通过自定义元场
如果我搜索关键字“XYZ”,默认情况下它返回具有“XYZ”中的帖子标题,这是伟大的。
举个例子,让我们说,我得到如下结果:
XYZ1
XYZ2
XYZ3
不过,我想这3个结果由一个名为“优先级”
自定义元字段排序因此上述应该是这样的
XYZ2(具有优先级10)
XYZ1(具有优先级7)
XYZ3(具有优先级4)
我试过如下:
<?php
$args = array(
'orderby' => 'meta_value_num',
'meta_key' => 'priority',
'order' => 'DESC'
);
query_posts($args);
while (have_posts()) : the_post();
// Results
endwhile;
?>
但我得到的回报是,按优先顺序无关的帖子,例如
XYZ2(具有优先级10)
ABC3(优先9)
BBA4(优先8)
XYZ1(优先7)
...等等
不知道如果我失去了一些东西。
我也试过这样:
<?php
function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
$query->set('meta_key', 'priority');
$query->set('orderby', 'meta_value_num');
$query->set('order', 'DESC');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
?>
下面是最终代码段为我工作。
<?php
function SearchFilter($query) {
if ($query->is_main_query() && $query->is_search()) {
$query->set('post_type', 'post');
$query->set('showposts', -1);
$query->set('meta_key', 'priority');
$query->set('orderby', 'meta_value_num');
$query->set('order', 'DESC');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
?>
尝试它使用'pre_get_posts'功能设置,它应该帮助 –
我只是尝试了另一个代码,但还是同样的错误的结果...代码是上述 – user1251762
尝试使用'查询 - > is_main_query()&& $ query-> is_search()'in if条件 –