Intereting Posts
случайный код в конце файла после загрузки плагина Действия, используемые при очистке кеша (при добавлении / удалении сообщений) Пользовательский запрос поля и категории Предложение WP_Query OR для tax_query и ключевых слов Перемещение онлайн-сайта в MAMP или тупой идеей? Сломанные ссылки на изображения в медиатеке после восстановления есть ли функция multisite, имеющая функции posts? Как добавить функциональность администратора, чтобы можно было выбирать другую группу полей для отображения на веб-странице с использованием дополнительных пользовательских полей? Как мы показываем Архивы для определенных категорий Как установить черновик страницы как родителя без публикации? Пользовательский пост не работает должным образом Оценка внешнего правила перезаписи перед внутренним правилом перезаписи WordPress SQL-запрос не работает в алфавитном заголовке / содержании разбиение на страницы разбито, потому что wordpress добавляет index.html Как сделать дочернюю тему независимой от родителя?

получить только один последний комментарий от каждого сообщения

Допустим, у меня есть 5 сообщений, где размещены самые последние комментарии. Как я могу получить один комментарий по каждому из этих сообщений? Я хочу использовать get_comments (). Является ли это возможным?

Post1: Comment 1 Comment 6 Post2: Comment 2 Post3: Comment 5 Comment 7 Post4: Comment 3 Comment 4 Post5: Comment 8 

Результат должен выглядеть так:

 Comment8 Comment7 Comment6 Comment4 Comment2 

Построение SQL-запроса:

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

 /** * Fetch comments' IDs for the most recently commented posts * (only one comment per post) * * @param integer $count * @return array */ function get_cids_wpse ( $count = 5 ) { global $wpdb; $sql = "SELECT MAX( comment_ID ) as cid FROM {$wpdb->comments} GROUP BY comment_post_ID ORDER BY cid DESC LIMIT 0, %d"; return $wpdb->get_cols( $wpdb->prepare( $sql, $count ) ); } 

где я предполагаю, что дата комментариев имеет тот же порядок, что и идентификаторы. Если это не относится к вашей настройке, нам нужно еще больше настроить это.

Примеры использования:

Если нам нужно получить последние 5 комментариев за сообщение, мы можем использовать:

 $cids = get_cids_wpse( 5 ); $comments = array(); foreach( (array) $cids as $cid ) { $comments[] = get_comment( $cid ); } 

или эта настройка:

 $args = array( 'include' => get_cids_wpse( 5 );, 'orderby' => '_include', //<-- custom parameter ); $comments = get_comments( $args ); 

где мы используем этот фрагмент кода для заказа по значениям include.

Примечание. Вы также можете расширить этот пример, get_results() больше полей db комментариев, а затем используйте метод get_results() вместо get_col() . Затем вы будете использовать только один запрос db для извлечения всех данных комментариев.