2017-02-12 4 views
2

Ich versuche, am meisten kommentierte Beiträge einer bestimmten Kategorie letzten Monat anzuzeigen. Das ist mein Code für jetzt, ich kann nicht herausfinden, was hier falsch ist, irgendwelche Ideen?die meisten kommentierten Beiträge anzeigen letzten Monat wordpress

<?php 
function filter_where($where = '') { 
    $where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'"; 
    return $where; 
       } 

    add_filter('posts_where', 'filter_where'); 
    $the_query = new WP_Query(array('posts_per_page' => 3, 'cat' => 2, 'orderby' => 'comment_count date', 'order'=> 'DESC')); 

    remove_filter('posts_where', 'filter_where'); 
       ?> 
    <?php while ($the_query->have_posts()) : $the_query->the_post(); 
        echo get_the_title(); 
        // and rest of content 
    endwhile; 
wp_reset_postdata(); ?> 

bearbeiten: p.s. Übrigens verwende ich Vkontakte Api Plugin für meine Kommentare. Kann sein, dass das Problem hier ist, weil dieser Code auf der anderen Seite funktioniert. Aber, get_comments_number() zeigt die richtige Zahl, warum funktioniert dann orderby => comment_count nicht?

Antwort

0

Dafür müssen Sie date_query verwenden.

$args = [ 
    'posts_per_page' => 3, 
    'post_type' => 'post', 
    'date_query' => [ 
     [ 
      'year' => date('Y', strtotime(date('Y-m-d') . " -1 month")), 
      'month' => date('m', strtotime(date('Y-m-d') . " -1 month")) 
     ] 
    ], 
    'orderby' => 'comment_count', 
    'order' => 'DESC' 
]; 
$posts = new WP_Query($args); 
//$posts = get_posts($args); 
//print_r($posts); 


Die MySQL-Abfrage für das Erhalten der beliebten Posten des letzten Monats wird sein: ( vorausgesetzt NOW() = 13 Feb 2017)

SELECT 
    posts.ID, 
    posts.post_title, 
    posts.post_date 
FROM 
    wp_posts AS posts 
WHERE 
    YEAR (posts.post_date) = 2017 
AND MONTH (posts.post_date) = 1 
AND posts.post_type = 'post' 
AND posts.post_status = 'publish' 
ORDER BY 
    posts.comment_count DESC 
LIMIT 0, 3; 

hoffe, das hilft!

+0

Leider hilft das nicht. danke trotzdem – Dolohov

+0

@Dolohov: können Sie die MySQL ausführen und lassen Sie mich, wenn Sie einen Beitrag erhalten oder nicht? Ersetzen Sie einfach das Tabellenpräfix durch Ihr. –

+0

Ich bekomme sie. aber nicht nach comment_count sortiert. btw Ich habe gestern noch ein paar Infos hinzugefügt, IDK, wenn Sie bemerkt haben oder nicht – Dolohov

Verwandte Themen