Wie bekomme ich Beiträge und Kommentare pro Stunde, pro Jahr und pro Monat?

Ich habe diesen Ausschnitt:

function count_user_comments_today( $uid ){ global $wpdb; $today = date('Ym-d'); $tomorrow = date('Ym-d', time() + 86400); $count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->comments} WHERE user_id = %d AND comment_date >= %s AND comment_date < %s ", $uid, $today, $tomorrow )); return $count; } 

Aber das sind die Kommentare pro Tag und das für einen bestimmten Benutzer. Ich möchte, dass es generisch ist, für die gesamte Website und pro Stunde, pro Jahr und pro Monat …. Ist das möglich? Natürlich auch die Posts und nicht nur die Kommentare.

Solutions Collecting From Web of "Wie bekomme ich Beiträge und Kommentare pro Stunde, pro Jahr und pro Monat?"

Für Kommentare:

 function count_comments_in_period( $date_from, $date_to ){ global $wpdb; $count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->comments} WHERE comment_date >= %s AND comment_date < %s ", $date_from, $date_to)); return $count; } 

Verwenden Sie einfach Daten im yyyy-mm-dd Format.

Für Beiträge:

 function count_posts_in_period( $date_from, $date_to ){ global $wpdb; $count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_date >= %s AND post_date < %s ", $date_from, $date_to)); return $count; } 

Ich habe keine Zeit, um beide functionen zu bauen, und ich habe keine Zeit, um diese zu testen, aber ich denke, das ist zumindest nah dran:

 function funky_comment_query_wpse_108830($year, $month, $hour) { if (!empty($year)) { $sql[] = "YEAR(comment_date) = {$year}"; } if (!empty($month)) { $sql[] = "MONTH(comment_date) = {$month}"; } if (!empty($hour)) { $sql[] = "HOUR(comment_date) = {$hour}"; } if (empty($sql)) { return; } global $wpdb; $sql = implode(' AND ',$sql); $count = $wpdb->get_var("SELECT count(comment_ID) FROM {$wpdb->comments} WHERE {$sql}"); return $count; } echo funky_comment_query_wpse_108830('2013','','');