Все комментарии на одной странице WordPress
Для вывода всех комментариев на одной странице можно воспользоваться функцией WP_Comment_Query либо достать их сразу из базы данных. Эстетично показывать комментарии с одобренным статусом status=approve. Так же количество можно ограничить используя number=10. Если на блоге разрешены пинг и трекбеки, то можно и их исключить.
Пример использования функции WP_Comment_Query:
1 2 3 4 5 6 7 |
$comments_query = new WP_Comment_Query; $comments = $comments_query->query( 'status=approve&number=10' ); if ( $comments ) { foreach ( $comments as $comment ) { ?> <a href="<? echo get_permalink($comment->comment_post_ID) ?>" title="Статья <? echo get_the_title($comment->comment_post_ID) ?>"> <p class="<? if ($comment->user_id == 1) { echo 'author';} else {echo 'reader';} ?>"><? echo $comment->comment_author . ": " . $comment->comment_content; ?></p></a> <? }} ?> |
А далее пример выгрузки комментариев из mysql:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php global $wpdb; $max = '50'; // -1 для вывода всех комментариев $result = ''; $sql = "SELECT c.*, p.post_title FROM $wpdb->comments c INNER JOIN $wpdb->posts p ON (c.comment_post_id = p.ID) "; $sql .= "WHERE comment_approved = '1' "; $sql .= "AND comment_type not in ('trackback', 'pingback') "; $sql .= "AND p.post_status != 'trash' "; $sql .= "ORDER BY comment_date DESC"; if ('-1' != $max) $sql .= " LIMIT 0, $max"; $results = $wpdb->get_results($sql); $templates = "\t" . '<div style="margin-bottom:20px">%gravatar% <a href="%authorurl%">%authorname%</a> в посте <a href="%posturl%#comment-%commentid%">%posttitle%</a> <br/>%commentcontent%</div>' . "\n"; foreach ($results as $row) { $tags = array( '%commentdate%', '%gravatar%', '%posttitle%', '%posturl%', '%authorurl%', '%authorname%', '%commentid%', '%commentcontent%' ); $replacements = array( $row->comment_date, get_avatar($row->comment_author_email, '30'), $row->post_title, get_permalink($row->comment_post_ID), $row->comment_author_url, $row->comment_author, $row->comment_ID, $row->comment_content ); $result .= str_replace($tags, $replacements, $templates); } if ($result) $result = '<div>' . "\n" . $result . '</div>' . "\n"; // output echo $result; ?> |
Рассказать: