2010-12-18 17 views
0

Ich versuche, populäre Beiträge mit der Anzahl der Kommentare zu bekommen. Ich möchte auch einige Kategorien von der Abfrage ausschließen. Irgendeine Idee, wie dies erreicht werden kann.Wie bekomme ich beliebte Posts für ausgewählte Kategorien in WordPress?

Was wäre Abfrage, bestimmte Kategorien auszuschließen? zum Beispiel möchte ich die Abfrage sollte nicht Kategorienamen Gesundheit und Auto

SELECT ID, POST_TITLE, COUNT ($ wpdb-> comments.comment_post_ID) AS 'stammy' FROM wpdb- $> Beiträge, $ include wpdb-> Kommentare WHERE = comment_approved '1' AND wpdb- $> posts.ID = $ wpdb-> comments.comment_post_ID UND post_status = 'veröffentlichen' UND post_date < '$ jetzt UND post_date

Antwort

0

Das habe ich vor einiger Zeit gemacht. Auf meinem Blog Sie Lösung haben, weiß ich, seine in der polnischen, aber Code ist Code :) http://blog.grabek-adam.pl/2010/06/wordpress-popularne-posty-plugin-do-obrazkw/

Sie haben hier nur Abfrage:

$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 
         "); 

Dieser Code wird Kategorien nur enthalten, die Sie AND wp_term_taxonomy.term_id IN ("cat_id1,cat_id2,cat_id5") hier angeben, aber ich denke, es einfach für Ihre Anforderungen

2
zu ändern

es gibt 3 verfügbaren Funktionen in Wordpress Sie verwenden können, um dies zu tun .. query_posts, get_posts oder WP_Query zurückzukehren, um eine Auswahl der Beiträge der Kommentar bestellt zählen, keine Notwendigkeit für die SQL-Abfrage ..

<?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 und 3 sind Kategorien zu enthalten, 4, 5 und 6 sind Ausschlüsse, zeigt der negativer Wert einen Ausschluß, normale Nicht-Negative sind Einschlüsse.

Hier finden Sie weitere mögliche Parameter für die Abfrage.
http://codex.wordpress.org/Function_Reference/query_posts

hier auch Informationen über Tags innerhalb der Post-Schleife verwendet (the_title, the_content, etc). http://codex.wordpress.org/Template_Tags#Post_tags

Hoffnung, das hilft ... :)

Verwandte Themen