Intereting Posts
Совокупные комментарии, с разбивкой на страницы Как запустить функцию, когда сообщение редактируется или обновляется с помощью публикации post action? Как скрыть определенные ящики таксономии от пользователей в админе, добавить страницу сообщения? Запретить применение add_filter к страницам wp-admin wp_list_widget_controls () undefined WooCommerce – различные значки для категорий продуктов как указать в заголовке после листинга, если пользователю уже понравился этот пост Отношение мета-запроса 'OR' не работает должным образом Задайте заголовок сообщения из двух мета-полей Показать полное дерево категории за год со всеми заголовками сообщений? К какой должности относится термин таксономии? Масонство – Невозможно найти переменные изображенияLoaded Меню сокращает пространство между словами Как разделять статические фразы из файлов шаблонов в пользовательской теме? Лучшая практика для отображения категоризированных сообщений на главной странице

Как выводить количество комментариев в столбце в день?

У меня вопрос о номерах комментариев в сообщении … На данный момент я могу вывести общее количество комментариев внутри сообщения вне цикла. Это достаточно круто, но я хочу показать номер комментария / количество сообщения PER DAY . Итак, скажем, у меня есть почта, и люди сегодня комментируют 10 раз … Чем, я хочу показать «10 комментариев» после заголовка сообщения … Если день идет, и только один человек комментирует на следующий день, я хочу он выводит «1 комментарий» после заголовка сообщения …

Возможно ли, если да, то как?

Я хочу использовать следующую функцию для вывода этого комментария на каждый пост после каждого сообщения:

function wowPosts($num) { global $wpdb; $posts = $wpdb->get_results("SELECT comment_count, ID, post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , $num"); foreach ($posts as $post) { setup_postdata($post); $id = $post->ID; $title = $post->post_title; $count = $post->comment_count; $comment_count = get_comment_count($post->ID); $all_comments = get_comment_count( array ( 'post_id' => get_the_ID() ) ); if ($count != 0) { $popular .= '<li>'; $popular .= '<a href="' . get_permalink($id) . '" title="' . $title . '">' . $title . '</a> '. count( $all_comments ) . ' '; $popular .= '</li>'; } } return $popular; } 

Нет аргументов для ограничения запроса комментария непосредственно на заданную дату. Вы должны отфильтровать запрос позже:

 /** * Get the number of comments for a post today. * * @param int $post_id * @return int */ function t5_count_comments_today( $post_id = NULL ) { if ( NULL === $post_id ) $post_id = get_the_ID(); add_filter( 'comments_clauses', 't5_comments_today_sql' ); // get_comments() returns a string even with 'count' set to TRUE. return (int) get_comments( array ( 'post_id' => $post_id, 'count' => TRUE ) ); } /** * Add date specific WHERE clause to comment query. * * Deactivates itself to avoid collisions with regular comment queries. * * @wp-hook comments_clauses * @param array $clauses * @return array */ function t5_comments_today_sql( $clauses ) { // avoid collisions remove_filter( current_filter(), __FUNCTION__ ); global $wpdb; $clauses['where'] .= $wpdb->prepare( ' AND comment_date >= %s', date( 'Ymd 00:00:00' ) ); return $clauses; } 

Простое использование

 echo t5_count_comments_today(); 

Или, если вы не хотите показывать нулевые комментарии:

 $comments_today = t5_count_comments_today(); if ( 0 < $comments_today ) echo $comments_today; 

Расширенный вариант использования

Это добавляет номер в текст comments_popup_link() .

 is_admin() || add_filter( 'comments_number', 't5_comment_number_today', 10, 2 ); /** * Add formatted number to total comments number. * * @wp-hook comments_number * @param string $output * @param int $number Might be a string, so we cast it to int. * @return string */ function t5_comment_number_today( $output, $number ) { // no comments at all, no need to count today's comments if ( 0 === (int) $number ) return $output; $count = t5_count_comments_today(); $add = 'no comments today'; // default text if ( 1 === $count ) $add = 'one comment today'; if ( 1 < $count ) $add = "$count comments today"; return "$output ($add)"; } 

Замечание: всегда используйте get_comments() или класс WP_Comment_Query для которого get_comments() является оболочкой, потому что этот результат будет кэшироваться, поэтому вам никогда не придется дважды получать одно и то же значение для одного и того же списка аргументов.
Избегайте не-API-вызовов с необработанным SQL в этих случаях.

Таблица базы данных, которую WordPress использует для хранения своих комментариев, содержит пару полей даты – comment_date и comment_date_gmt . Вы должны сделать что-то вроде этого:

 function wpse99287_comment_count( $content ) { global $wpdb; global $post; $today = date( 'Ymd 00:00:00' ); $tomorrow = date( 'Ymd 23:59:59' ); $sql = "SELECT COUNT(comment_id) FROM {$wpdb->comments} WHERE comment_post_ID = {$post->ID} AND comment_approved = 1 AND comment_date >= '$today' AND comment_date <= '$tomorrow'"; $comment_count = $wpdb->get_var( $sql ); $content = "<div class='comment-count'>$comment_count comment(s) today</div>" . $content; } add_filter( 'the_content', 'wpse99287_comment_count' ); 

Это добавит количество комментариев в <div> в начале содержимого вашего сообщения.

Рекомендации

Класс wpdb