如何拆分Wordpress查询?

时间:2012-08-27 05:35:56

标签: php wordpress

我一直在寻找网络,我甚至试图聘请自由职业者寻求帮助,但没有运气。在搜索时我发现了how to get popular posts fro selected categories in wordpress?& http://www.queness.com/code-snippet/6546/how-to-display-most-popular-posts-from-a-specific-category-in-wordpress那基本上就是我想要的东西,但我希望我从中获得的信息能够分开,这样我就可以对帖子进行排名。

<?php
$args=array(
  'cat' => 3, // this is category ID
  'orderby' => 'comment_count',
  'order' => 'DESC',
  'post_type' => 'post',
  'post_status' => 'publish',
  'posts_per_page' => 6, // how much post you want to display
  'caller_get_posts'=> 1
);
$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) { ?>
<ul>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php    the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php  endwhile; ?>
</ul>
<?php }

wp_reset_query(); ?>

使用该代码,它通过评论获得最受欢迎的帖子,我想要做的基本上是取结果并添加排名,如下例所示。

#1 - post 1
#2 - post 2
#3 - post 3
#4 - post 4
#5 - post5 last post

提前感谢任何帮助

2 个答案:

答案 0 :(得分:1)

可能这个想法会对你有所帮助。

使用get_comments_number($ post_id)function

获取评论数量,然后执行if else循环以显示排名。

$num_comments = get_comments_number(); // get_comments_number returns only a numeric value

if ( comments_open() ) {
if ( $num_comments == 0 ) {
    $rating= 0 ;
} elseif ( $num_comments > 1 ) {
    $rating= 1 ;
} else {
    $rating= 0 ;
}
}

谢谢

答案 1 :(得分:0)

根据您目前的问题,我了解以下内容:

  1. 您想从WP数据库中查询评论最多的帖子。
  2. 您希望向访问者显示已接收帖子的排名。排名取决于帖子的评论数量。
  3. 所以你的结果可能是:

    1个帖子A(评论数500)

    2帖子B(评论数499)

    3张贴Z(评论数200)

    我就是这样做的:

    <?php
    function get_popular_posts()
    {
    
    $sql="SELECT comment_count, guid AS link_to_post, post_title
    FROM wp_posts 
    WHERE post_status = "publish" AND post_type = "post"
    ORDER BY comment_count DESC
    LIMIT 5"
    return $wpdb->get_results($sql, OBJECT)
    
    }   
    $post_objects = get_popular_posts();
    $i = 1;
    foreach($post_objects as $object)
    {
    echo 'Post: ' . $i . '#' . ' ' . $post_title . ' ' . $link_to_post . ' ' . $comment_count;
    $i++;
    }
    ?>
    

    尚未测试代码。但它应该从数据库中获取五个“顶级帖子”。由于解释原因,请留在comment_count中。