function order_search_by_posttype( $orderby, $wp_query ) {
global $wpdb;
if ( $wp_query->query_vars['post_type'] == [
'portfolio',
'product',
'job_listing'
] ) {
$orderby =
"
CASE WHEN {$wpdb->prefix}posts.post_type = 'job_listing' THEN '1'
WHEN {$wpdb->prefix}posts.post_type = 'product' THEN '2'
WHEN {$wpdb->prefix}posts.post_type = 'portfolio' THEN '3'
ELSE {$wpdb->prefix}posts.post_type END ASC,
{$wpdb->prefix}posts.post_title ASC";
}
return $orderby;
}
add_filter( 'posts_orderby', 'order_search_by_posttype', 10, 2 );