Skip Navigation

[Resolved] Sort search results by comment count?

This thread is resolved. Here is a description of the problem and solution.

Problem:

The customer wants to sort results based on the comments count.

Solution:

Upon further review, I identified that the comment_count field in the wp_posts table can be used directly for sorting. I provided a code snippet to add to the theme's functions.php file to sort by the comment_count field:

add_filter('wpv_filter_query', function($query, $setting, $view_id){
    if (in_array($view_id, array(1234))) {
        $query['orderby'] = array('comment_count' => 'DESC');
    }
    return $query;
}, 101, 3);

Replace 1234 with the actual view's ID. This code sorts the results by the number of comments in descending order.

Relevant Documentation:
https://toolset.com/documentation/programmer-reference/views-filters/#wpv_filter_query

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

No supporters are available to work today on Toolset forum. Feel free to create tickets and we will handle it as soon as we are online. Thank you for your understanding.

Sun Mon Tue Wed Thu Fri Sat
- 9:00 – 12:00 9:00 – 12:00 9:00 – 12:00 9:00 – 12:00 9:00 – 12:00 -
- 13:00 – 18:00 13:00 – 18:00 13:00 – 18:00 13:00 – 18:00 13:00 – 18:00 -

Supporter timezone: America/Sao_Paulo (GMT-03:00)

This topic contains 2 replies, has 2 voices.

Last updated by Mateus Getulio 2 months, 1 week ago.

Assisted by: Mateus Getulio.

Author
Posts
#2704336

a.R

Hi, how do that? Thank you 🙂

#2704362

Mateus Getulio
Supporter

Languages: English (English )

Timezone: America/Sao_Paulo (GMT-03:00)

Hello there,

I'm afraid that there's no built-in feature that would allow you to sort the results based on the comments count.

As a workaround you could populate a custom field with the comments number using https://developer.wordpress.org/reference/functions/wp_count_comments/ and sort it using the newly added custom field.

Ideally you'd use cron to run the script that populates the custom field with the number of comments periodically, eg.: once a day.

Please check: https://toolset.com/forums/topic/how-to-create-custom-query-or-ordering-in-views-loop-results/#post-435106

Please have in mind that giving support to custom code is out of the scope of this forum. The hints I shared could point you in the right direction, but we can't create, debug or modify custom code for you and it's your responsibility to maintain it.

If implementation becomes a roadblock, you might want to explore the list of Toolset Contractors for assistance: https://toolset.com/contractors/

Kind regards,
Mateus

#2704875

Mateus Getulio
Supporter

Languages: English (English )

Timezone: America/Sao_Paulo (GMT-03:00)

Hello there,

Just a quick follow-up regarding my last reply.

Upon further review, I checked that there's a field comment_count available within the wp_posts table that can be used for this. It is possible to sort it using this field and some custom code, you can use the wpv_filter_query to change the orderby parameter, for example:

Please add the following code to your theme's "functions.php" file:

add_filter( 'wpv_filter_query', function($query, $setting, $view_id){
	if(in_array($view_id,array(1234))){		
		$query['orderby'] = array('comment_count' => 'DESC');
	}
	return $query;
}, 101, 3);

Please replace 1234 with your actual view's ID and test it to see if it is ordering it as expected.

More help:
https://toolset.com/documentation/programmer-reference/views-filters/#wpv_filter_query
https://developer.wordpress.org/reference/classes/wp_query/#order-orderby-parameters

This ticket is now closed. If you're a Toolset client and need related help, please open a new support ticket.