如何从wordpress中的选定类别获得热门帖子?

时间:2010-12-18 07:09:53

标签: wordpress wordpress-theming

我正在尝试使用coment计数获得热门帖子。我还想从查询中排除一些类别。不知道如何实现这一目标。

排除特定类别的查询是什么?例如,我希望查询不应包括类别名称健康和自动

  

SELECT ID,post_title,   COUNT($ wpdb-> comments.comment_post_ID)   AS'stammy'来自$ wpdb->帖子,   $ wpdb->评论WHERE comment_approved   ='1'和$ wpdb-> posts.ID = $ wpdb-> comments.comment_post_ID   AND post_status ='发布'AND   post_date< '$ now'和post_date

2 个答案:

答案 0 :(得分:2)

您可以使用WordPress中的3个可用功能执行此操作.. query_postsget_postsWP_Query以返回按评论计数排序的帖子选择,无需SQL查询..

<?php
$my_query = new WP_Query;
$my_query->query( array( 
    'cat' => '1,2,3,-4,-5,-6',
    'orderby' => 'comment_count',
    'order' => 'desc'
) );
if( $my_query->have_posts() ) :
    while( $my_query->have_posts() ) : $my_query->the_post();

        ?>
        <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <?php the_title(); ?><br />
            <?php the_content(); ?>
        </div>
        <?php

    endwhile;
endif;
wp_reset_query();
?>

1,2和3是要包括的类别,4,5和6是排除,负值表示排除,正常非负数是包含。

请参阅此处查询查询的其他可能参数 http://codex.wordpress.org/Function_Reference/query_posts

此处还提供有关在帖子循环中使用的标签的信息(the_titlethe_content等)。 http://codex.wordpress.org/Template_Tags#Post_tags

希望有帮助......:)

答案 1 :(得分:0)

我刚才这样做了。 在我的博客上你有解决方案,我知道它很简洁,但代码是代码:) http://blog.grabek-adam.pl/2010/06/wordpress-popularne-posty-plugin-do-obrazkw/

这里您只是查询:

$posty = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS wp_posts.id, wp_posts.post_title, wp_posts.comment_count, wp_posts.post_date
                        FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
                        INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
                        WHERE 1=1  AND wp_term_taxonomy.taxonomy = 'category'
                        AND wp_term_taxonomy.term_id IN ('cat_id1,cat_id2,cat_id5')
                        AND wp_posts.post_type = 'post'
                        AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
                        AND wp_posts.comment_count > 0
                        GROUP BY wp_posts.ID ORDER BY wp_posts.comment_count DESC
                        LIMIT 5
                        ");

此代码仅包含您在此处AND wp_term_taxonomy.term_id IN ("cat_id1,cat_id2,cat_id5")指定的类别,但我认为根据您的要求更改