Intereting Posts
Утвердить измененные должности get _ * _ meta не всегда возвращает массив Самый надежный способ для массового удаления исправлений Плагины будут установлены только с папкой 777. Решение? Как получить список сообщений на статической странице, кроме главной страницы? Список сообщений в категории, сгруппированных по другим категориям? Как получить идентификатор страницы, включенной в get_page ()? Отключить qTranslate по типу сообщения в admin + отключить на странице / сообщение ID на интерфейсе Коллекция пользовательских типов сообщений, отображаемых в подменю Пользовательская таксономия: родитель по-прежнему считает удаленный ребенок Добавление отслеживания конверсий, специфичных для транзакций, из Adwords в WooCommerce Пользовательский список категорий боковой панели? Вызов нескольких сценариев с использованием wp_enqueue_script Должен ли я использовать nonce для ajax загруженных сообщений в frontend (public)? Размер IMG установлен равным width = "964px" или "100%", но отображается в браузере как "634px"

Пользователь может публиковать только один комментарий в день на одной странице

Этот код подсчитывает комментарии в день на всех страницах. Я хочу, чтобы это учитывалось только на одной странице в течение 1 дня. Таким образом, мой случай: на странице с идентификатором 1 пользователь может прокомментировать любой лимит, но на странице с идентификатором 2 и тот же пользователь может прокомментировать один раз в день.

 <?php global $wpdb,$current_user; $limit = 5; //this is limit per day per user $comment_count = $wpdb->get_var( $wpdb->prepare(" SELECT count(*) FROM wp_comments WHERE comment_author = '%s' AND comment_date >= DATE_SUB( NOW(), INTERVAL 1 DAY );", $current_user->user_login ) ); if ( $comment_count < $limit ) { comment_form(); } else { echo 'exceeded comments limit - '.$limit; } 

Solutions Collecting From Web of "Пользователь может публиковать только один комментарий в день на одной странице"

Ограничение комментариев в день и на пользователя уже встроено в ваш текущий запрос. Единственное, чего не хватает, это проверить идентификатор сообщения. Вот довольно удобный тег функции / шаблона:

 /** * @param int $limit * @param int $time * @param int $ids */ function is_user_limit_reached( $limit = 5, $time = 1, $ids = array() ) { global $wpdb; // Cast to array ! is_array( $limited ) AND $limited = array( $limited ); // Generate SQL clause $ids = ! empty( $ids ) ? sprintf( " and comment_post_ID in (%s)", join( ",", $ids ) ) : ""; // Rows: user_id, comment_date, comment_post_ID $count = $wpdb->query( $wpdb->prepare( "select count(*) from {$wpdb->comments} where user_id=%d and comment_date >= date_sub( now(), interval %d day ) %s", get_current_user_id(), $time, $ids ) ); return $count >= $limit; } 

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

 if ( is_user_limit_reached( 10, // allowed comments per day 7, // in the last 7 days array( 1, 35, 97, 1148 ) // array of post IDs which have a limit ) ) { echo 'Your limit is already reached. Come back tomorrow'; } else { comment_form(); } 

Вы также можете включить или отключить тег шаблона блока комментариев и т. Д. Небо – ваш предел.