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條件 –