Показывать номер комментария на автора в день

Это возможно? Я никогда не видел, чтобы он использовался, но мне это нужно … Я хочу показать каждому автору (если они вошли в систему) на странице своего профиля, количество комментариев, которые они опубликовали сегодня. Если день проходит, чем счетчик должен быть 0, а счетчик комментариев должен начинаться снова.

Solutions Collecting From Web of "Показывать номер комментария на автора в день"

Вы можете попробовать этот запрос, который учитывает комментарии пользователей, используя поле user_id в таблице комментариев в качестве фильтра:

 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; } 

где мы используем PHP для предоставления текущей даты, и мы не используем никаких функций даты SQL в каждой строке.

Вы также можете рассмотреть использование класса WP_Comment_Query, если вы ищете более собственное решение.

Применение:

Вы можете использовать его для текущего пользователя:

 global $current_user; get_currentuserinfo(); echo count_user_comments_today( $current_user->ID ); 

и для нынешнего автора:

 echo count_user_comments_today( get_the_author_meta('ID') ); 

в цикле на странице шаблона author.php .

Вне цикла в author.php вы можете использовать:

 global $wp_query; $curauth = $wp_query->get_queried_object(); echo count_user_comments_today( $curauth->ID ); 

для нынешнего автора.

Да, это определенно возможно. См. http://codex.wordpress.org/Function_Reference/get_comment , вам нужно получить текущее время сервера в формате UNIX, а затем преобразовать comment_date_gmt из каждого возвращаемого с использованием цикла foreach

 function current_user_comments_today() { global $comment; global $current_user; get_currentuserinfo(); $all_user_comments = get_comments( array( 'comment_author_email' => $current_user-> user_email) ); $today = strtotime('today GMT'); $tomorrow = strtotime('today +1 GMT'); $comment_count = 0; foreach ( $all_user_comments as $key => $comment ) { $comment_time = strtotime( $comment['comment_date_gmt'] ); if ( $comment_time > $tomorrow && $comment_time < $today ) { $comment_count++; } else { continue; } } return $comment_count; } 

Я не знаю, как напрямую вытащить этот запрос с помощью функций Core, но SQL прост.

 $sql = "SELECT COUNT(comment_ID) FROM {$wpdb->comments} WHERE comment_author = 'admin' AND DATE(comment_date) = FROM_UNIXTIME('".time()."')"; $a = $wpdb->get_var($sql); 

Вы можете поочередно использовать что-то вроде AND DATE(comment_date) = FROM_UNIXTIME('".time()."')"; какую-либо конкретную дату.