2013-02-16 104 views
0

我已经尝试了以下链接上的解决方案,但是,我可以不让他们显示帖子!WordPress的,排序帖子按评论计数

http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query 
http://wordpress.stackexchange.com/questions/1529/displaying-posts-depending-on-number-of-comments-and-latest-comments 
http://wordpress.org/support/topic/sort-by-number-of-comments 

这是我的默认代码,我的问题是,我如何获得此代码按评论计数排序?

<?php 
/* 
Template Name: Homepage 
*/ 
get_header(); global $gp_settings, $user_ID, $user_identity, $user_level; 

$referrer = $_SERVER['HTTP_REFERER']; 

?> 

<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 


    <!-- BEGIN CONTENT --> 

    <div id="content"> 


     <!-- BEGIN POST CONTENT --> 

     <?php if($post->post_content) { ?> 

      <div id="post-content"> 
       <?php the_content(__('Read More &raquo;', 'gp_lang')); ?> 
      </div> 

      <?php } ?> 

     <!-- END POST CONTENT -->   


    </div> 

    <!-- END CONTENT -->  


<?php endwhile; endif; ?> 


<?php get_footer(); ?> 

这是我曾尝试没有成功

<?php 
/* 
Template Name: Homepage 
*/ 
get_header(); global $gp_settings, $user_ID, $user_identity, $user_level; 

$referrer = $_SERVER['HTTP_REFERER']; 

?> 
<?php 

$querystr = " 
SELECT $wpdb->posts.* 
FROM $wpdb->posts, $wpdb->postmeta 
WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id 
AND $wpdb->postmeta.meta_key = 'tag' 
AND $wpdb->postmeta.meta_value = 'email' 
AND $wpdb->posts.post_status = 'publish' 
AND $wpdb->posts.post_type = 'post' 
AND $wpdb->posts.post_date < NOW() 
ORDER BY $wpdb->posts.post_date DESC 
"; 

$pageposts = $wpdb->get_results($querystr, OBJECT); 

?> 
<?php if ($pageposts): ?> 
<?php global $post; ?> 
<?php foreach ($pageposts as $post): ?> 
<?php setup_postdata($post); ?> 

    <!-- BEGIN CONTENT --> 

    <div id="content"> 


    <!-- BEGIN POST CONTENT --> 

    <?php if($post->post_content) { ?> 

     <div id="post-content"> 
      <?php the_content(__('Read More &raquo;', 'gp_lang')); ?> 
     </div> 

    <?php } ?> 

    <!-- END POST CONTENT -->   


</div> 

<!-- END CONTENT -->  

<?php endforeach; ?> 
<?php endif; ?> 

<?php get_footer(); ?> 

回答

0

经验法则的代码的例子:如果你正在运行使用默认的WordPress表的SQL查询,你可能就错。

假设在你的页面的原始查询即将到来的职位是正确的,你只是要修改它们的顺序,可以使用主循环的原始参数来构建通过,而不是一个新的查询和循环:

<?php 
/* 
Template Name: Homepage 
*/ 
get_header(); global $gp_settings, $user_ID, $user_identity, $user_level; 
$referrer = $_SERVER['HTTP_REFERER']; 

global $wp_query; //Gets the default query 
$default_args = $wp_query->query; //Grabs the original arguments 
/* 
If you find that the above line returns a string rather than an array, 
use this instead: 
*/ 
//parse_str($wp_query->query, $default_args); 
$default_args['orderby'] = 'comment_count'; //Set the new order parameter 
$q = new WP_Query($default_args); //Generate a new Query 

if ($q->have_posts()) : while ($q->have_posts()) : $q->the_post(); //Loop through new Query ?> 
    <!-- BEGIN CONTENT --> 
    <div id="content"> 
     <!-- BEGIN POST CONTENT --> 
     <?php if($post->post_content) { ?> 
      <div id="post-content"> 
       <?php the_content(__('Read More &raquo;', 'gp_lang')); ?> 
      </div> 
      <?php } ?> 
     <!-- END POST CONTENT -->   
    </div> 
    <!-- END CONTENT --> 
<?php 
endwhile; endif; 
get_footer(); 
?> 
+0

请记住,'comment_count'参数仅适用于Wordpress 2.9或更高版本。 – maiorano84 2013-02-16 05:00:37

+1

我使用的是一个名为buddy的好友新闻主题,显示附加到帖子的图像缩略图,您的示例只返回评论,我将如何去查找好友主题正在使用的修改后的查询,以便我可以使用该查询并添加comment_count按顺序排列? – 2013-02-17 01:23:20