我正在尝试使用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
答案 0 :(得分:2)
您可以使用WordPress中的3个可用功能执行此操作.. query_posts
,get_posts
或WP_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_title
,the_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")
指定的类别,但我认为根据您的要求更改