WordPress: List posts with no comments WordPress: List posts with no comments wordpress wordpress

WordPress: List posts with no comments


You can set up a filter and query varaible to modify the SQL that queries the posts. Add this to your theme's functions.php file

function filter_comment_count( $sql ){    global $wpdb;    $comment_count = get_query_var( 'comment_count' );    if( is_numeric($comment_count) )        $sql .= $wpdb->prepare( " AND {$wpdb->posts}.comment_count = %d ", $comment_count );    return $sql;}

Then you can call query_posts( 'comment_count=0' ); (any number), you'll just want to add the filter beforehand,

add_filter( 'posts_where', 'filter_comment_count'  );

And after you make the call, you may want to remove the filter as well.

remove_filter( 'posts_where', 'filter_comment_count' ); 


Unfortunately query_posts does not allow you to limit the query to comment_count=0. You can do this:

query_posts( 'orderby=comment_count&order=ASC' );

But that does not only display posts with zero comments, it just displays those with zero comments first.

The more involved (but better) solution is to use a custom query that specifically limits the query to posts with 0 comments, but that means you would have to create your own loop structure (at least so far as I can tell)

global $wpdb;$query = "  SELECT *  FROM {$wpdb->prefix}posts  WHERE  {$wpdb->prefix}posts.post_type = 'post'  AND {$wpdb->prefix}posts.post_status = 'publish'  AND {$wpdb->prefix}posts.comment_count = 0  ORDER BY {$wpdb->prefix}posts.post_date  DESC;";$pageposts = $wpdb->get_results($query, OBJECT); <?php if ($pageposts): ?> <?php global $post; ?> <?php foreach ($pageposts as $post): ?> <?php setup_postdata($post); ?> <div class="post" id="post-<?php the_ID(); ?>"> <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>">    <?php the_title(); ?></a></h2>    <small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>    <div class="entry">       <?php the_content('Read the rest of this entry »'); ?>    </div>    <p class="postmetadata">Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?>      <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p> </div> <?php endforeach; ?> <?php else : ?>    <h2 class="center">Not Found</h2>    <p class="center">Sorry, but you are looking for something that isn't here.</p>    <?php include (TEMPLATEPATH . "/searchform.php"); ?> <?php endif; ?>

Does that seem within your knowledge to implement?


as simple as :

query_posts( array ( 'post_type' => 'yourposttype', 'posts_per_page' => 10, 'comment_count' => 0, ) );