有没有办法添加帖子ID数组,将帖子设置在搜索结果的顶部?
类似于在搜索范围内添加param top\\u post\\id:
$query->set( \'top_post_ids\', [45, 78, 94 ] );
如果这些帖子将出现在搜索结果中,它们应该位于顶部。
粘性帖子不能解决这个问题,在这种情况下,必须是帖子ID的数组。
搜索是通过WordPress Rest Api进行的,因此我无法修改调用搜索的模板文件。
example.com/wp-json/wp/v2/posts?search=car&per_page=12&page=1
SO网友:Friss
这不是最优雅的解决方案,但您可以在搜索页面上对结果进行排序:
在页面顶部,使wp\\u查询变量可用
global $wp_query;
在后面的代码中,如果有一些结果:
if ( have_posts() ) {
//your desired order
$order = array(45, 78, 94);
// a comparison function to sort the post array with your custom one
function sortByIds($a, $b){
global $order;
$a = array_search($a->ID, $order);
$b = array_search($b->ID, $order);
return $a - $b;
}
//we use usort to sort the wp_query post using a comparison function
// note, we could use a closure if your php version supports it
usort($wp_query->posts,\'sortByIds\');
//then your normal code....
}
这不是一个sql解决方案,但它可以工作。