WordPress Snippets

How to Order Posts by Number of Comments in WordPress

By ThemesDNA2 min read

Share:

The blog homepage on your WordPress website by default presents all published posts (not pages) in reverse chronological order, with the most recent post appearing at the top. That is for the convenience of both returning visitors who come to read your most recent posts and new visitors who are unlikely to be happy about having to go through several steps to see your most recent posts.

But if you don't like that above "sort posts by published date" behavior and need to "sort posts by number of comments", then select a code given below according to your need and add it into your theme's "functions.php" file.

Code 1:

Sort Homepage Posts by Number of Comments:

function themesdna_sort_homepage_posts_by_number_of_comments( $query ) {
    if( $query->is_main_query() && ! is_admin() && $query->is_home() ) {
        $query->set( 'orderby', 'comment_count' );
        $query->set( 'order', 'DESC' );
    }
}
add_action( 'pre_get_posts', 'themesdna_sort_homepage_posts_by_number_of_comments' );

Code 2:

Sort Homepage, Archive Pages (Category Pages, Tag Pages,...), Search Pages Posts by Number of Comments:

function themesdna_sort_posts_by_number_of_comments( $query ) {
    if( $query->is_main_query() && ! is_admin() && ( $query->is_home() || $query->is_search() || $query->is_archive() ) ) {
        $query->set( 'orderby', 'comment_count' );
        $query->set( 'order', 'DESC' );
    }
}
add_action( 'pre_get_posts', 'themesdna_sort_posts_by_number_of_comments' );

Note: If you don't like to edit the functions.php file of your theme, you can use a plugin like "Code Snippets" to run custom code snippets on your site.

Premium WordPress themes Made for WordPress   /   Ready for your story

Ready to Build?

Your next great website starts here.

Build more websites with one flexible collection—and keep every theme for life.

  • 56+ themes
  • Lifetime updates
  • Unlimited websites
  • No renewals

The complete collection

$75

One payment. No renewals.

Get the Themes Bundle — $75Purchase terms