The posts_search_orderby filter allows you to modify the ORDER BY clause used when ordering search results in WordPress.
Usage
add_filter('posts_search_orderby', 'my_custom_search_orderby', 10, 2);
function my_custom_search_orderby($search_orderby, $query) {
// your custom code here
return $search_orderby;
}
Parameters
- $search_orderby (string): The ORDER BY clause.
- $query (WP_Query): The current WP_Query instance.
More information
See WordPress Developer Resources: posts_search_orderby
Examples
Order search results by post date
To order search results by post date in descending order:
add_filter('posts_search_orderby', 'orderby_post_date', 10, 2);
function orderby_post_date($search_orderby, $query) {
$search_orderby = 'post_date DESC';
return $search_orderby;
}
Order search results by post title
To order search results alphabetically by post title:
add_filter('posts_search_orderby', 'orderby_post_title', 10, 2);
function orderby_post_title($search_orderby, $query) {
$search_orderby = 'post_title ASC';
return $search_orderby;
}
Order search results by comment count
To order search results by the number of comments in descending order:
add_filter('posts_search_orderby', 'orderby_comment_count', 10, 2);
function orderby_comment_count($search_orderby, $query) {
$search_orderby = 'comment_count DESC';
return $search_orderby;
}
Order search results by random order
To order search results randomly:
add_filter('posts_search_orderby', 'orderby_random', 10, 2);
function orderby_random($search_orderby, $query) {
$search_orderby = 'RAND()';
return $search_orderby;
}
Order search results by custom field value
To order search results by a custom field value in ascending order:
add_filter('posts_search_orderby', 'orderby_custom_field', 10, 2);
function orderby_custom_field($search_orderby, $query) {
global $wpdb;
$search_orderby = "{$wpdb->prefix}postmeta.meta_value ASC";
return $search_orderby;
}