Wie man Kommentatoren und Tage seit dem letzten kommentiert kommentiert

Als Dankeschön an die Hunderte von Leuten, die durch Kommentare zu meinem Blog beigetragen haben, habe ich eine Seite erstellt, die (1) sie auflistet, mit (2) wie viele Kommentare sie gemacht haben. So weit, ist es gut! Was wäre ein großer letzter Schliff wäre jedoch zu zeigen, (3) wie viele Tage seit sie zuletzt gepostet haben, und das ist, wo es meine Fähigkeiten gegangen ist. Irgendwelche guten Ideen?

Hier ist, was ich für den Arbeitsteil habe:

function top_comment_authors($amount = 250) { global $wpdb; $results = $wpdb->get_results(' SELECT COUNT(comment_author) AS comments_count, comment_author FROM '.$wpdb->comments.' WHERE comment_author != "" AND comment_type = "" AND comment_approved = 1 GROUP BY comment_author ORDER BY comments_count DESC, comment_author ASC LIMIT '.$amount ); $output = '
'; foreach($results as $result) { $output .= '

'.$result->comment_author.' ('.$result->comments_count.' comments)

'; } $output .= '
'; echo $output; }

Solutions Collecting From Web of "Wie man Kommentatoren und Tage seit dem letzten kommentiert kommentiert"

Es sieht so aus, als könntest du das hinzufügen

 MAX( comment_date ) last_commented_date 

zu der Feldliste, um das späteste Datum zu erhalten, kommentierte jeder Benutzer.

Verwenden Sie dann z. B. die function human_time_diff() , um einen für Menschen lesbaren Text zu erhalten, wie lange jeder Benutzer kommentiert hat.

 human_time_diff( strtotime( $result->last_commented_date) ) 

Aus Sicherheitsgründen sollten Sie dann die SQL-statement mit $wpdb->prepare() , da sie die Benutzereingabe $wpdb->prepare() enthält.

Vielen Dank. Endgültiger (funktionierender) Code für jeden, der dies entdeckt:

 function top_comment_authors($amount = 200) { global $wpdb; $prepared_statement = $wpdb->prepare( 'SELECT COUNT(comment_author) AS comments_count, comment_author, MAX( comment_date ) as last_commented_date FROM '.$wpdb->comments.' WHERE comment_author != "" AND comment_type = "" AND comment_approved = 1 GROUP BY comment_author ORDER BY comments_count DESC, comment_author ASC LIMIT %d', $amount); $results = $wpdb->get_results($prepared_statement); $output = '
'; foreach($results as $result) { $output .= '

'.$result->comment_author.' • '.$result->comments_count.' comments, last comment '.human_time_diff(strtotime($result->last_commented_date)).' ago

'; } $output .= '
'; echo $output; }