I recently ran into this problem with the excellent plugin Relevanssi. I setup a custom search area which searched through a custom post type and returned good results, however we needed to implement a feature for the client to be able to “sticky” some posts to the top of the search results if it appeared in the results. After looking for some time I found a solution which is available in the code below. You can put this code in your functions.php or plugin or whereever.
add_filter( 'relevanssi_hits_filter', 'hits_filter' );
function hits_filter( $data ) {
$hits = $data[0];
$regularposts = array();
$stickyposts = array();
foreach ( $hits as $key => $hit ) {
if ( is_sticky($hit->ID)) $stickyposts[] = $hit;
else $regularposts[] = $hit;
}
$filtered_hits = array_merge($stickyposts, $regularposts);
$filtered_data = array( $filtered_hits, $data[1] );
return $filtered_data;
}
This should filter through all the posts and push the sticky posts to the top. Let me know if you have any questions!