Главная » Создание сайтов » WordPress » Вывод последних комментариев без плагина

Вывод последних комментариев без плагина


Для простоты взаимодействия пользователей и авторов, в блогах стараются выводить последние комментарии. Они способствуют общению.

Чтобы использовать такую возможность в своем блоге, я нашел плагин: WP-RecentComments

Но как-то не люблю я плагины. Редактировать их неудобно или из-за их недоступности, но я решился на использование собственной функции, вместо wp-recentcomments.

function last_comment($count = 10, $echo = true){
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ( $wpdb->comments.comment_post_ID = $wpdb->posts.ID )
WHERE comment_approved = '1'
AND comment_type = ''
AND post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT $count";
$comments = $wpdb->get_results($sql);
$out = "\n";
foreach($comments as $comment){
$tpl = '<span>'.$comment->comment_author.'</span> - <a href="'.get_permalink($comment->comment_post_ID).'/#comment-'.$comment->comment_ID.'">'.$comment->post_title.'</a>, '.comm_date($comment->comment_date_gmt);
$out .= "\n\t".'<li>'.$tpl.'</li>';
}
$out .= "\n";
if ($echo) echo $out;
else return $out;
}
function comm_date($time){
$in = array('-',':');$on = ' ';$time = str_replace($in,$on,$time);
list($Y,$M,$D, $h, $m, $s) = sscanf($time, '%s %s %s %s %s %s');
$month = array(
'01'=>'января',
'02'=>'февраля',
'03'=>'марта',
'04'=>'апреля',
'05'=>'мая',
'06'=>'июня',
'07'=>'июля',
'08'=>'августа',
'09'=>'сентября',
'10'=>'октября',
'11'=>'ноября',
'12'=>'декабря'
);
return "$D ".$month[$M]." $Y в $h:$m";
}

Конечно не аналог того плагина, но то, что нужно.

Работа с функцией очень проста. Для просмотра последних комментариев, в любом месте вашего шаблона вставьте:
<ul>
<?php last_comment(); ?>
</ul>

Вывести 20 последних комментариев:
<ul>
<?php last_comment(20); ?>
</ul>

Для дальнейшей работы с комментариями без вывода:
<ul>
<?php last_comment(,false); ?>
</ul>

Использовать 20 последних комментариев для дальнейшей обработки.
<ul>
<?php last_comment(20, false); ?>
</ul>

Каждый комментарий выводится следующей строчкой:
$tpl = '<span>'.$comment->comment_author.'</span> - <a href="'.get_permalink($comment->comment_ID).'/#comment-'.$comment->comment_ID.'">'.$comment->post_title.'</a>, '.comm_date($comment->comment_date_gmt).';';

Ее вы можете редактировать сколь угодно, вот список переменных:

  • $comment->comment_author — Автор комментария;
  • $comment->comment_ID — Идентификатор (ID) комментария;
  • $comment->post_title — Название статьи данного комментария;
  • comm_date ($comment->comment_date_gmt) — Дата вывода комментария
Есть ошибки в коде? Можно или безопасно использовать такую конструкцию? С уважением, Vasilenko Ivan!

Комментарии — 6 комментариев

  1. #10331 Lovedancer в 1:27, 7 сентября 2010: (подписался)

    Ответить | Цитировать

    Подскажите пожалуйста, а куда нужно вставить как таковую функцию. Если можно, то поподробнее.

  2. Если вы хотите сбоку, как у нас, то в редакторе шаблонов открываете файл sidebar.php и в нужное место вставляете.

    Затем нужно добавить стили.

    ul{margin:3px 0 0 15px;list-style:none;color:#ababab;font-size:10px}

    li{margin:0 0 5px 0;}

    span{color:#e51d9b;}

  3. #10686 Inch в 19:55, 6 ноября 2010:

    Ответить | Цитировать

    а как объединить одинаковые записи от одного и того же комментатора к одному и тому же посту?

    то есть необходимо вывести названия постов, которые последние комментировались.

  4. #10687 Inch в 20:30, 6 ноября 2010:

    Ответить | Цитировать

    «а как объединить одинаковые записи от одного и того же комментатора к одному и тому же посту?

    то есть необходимо вывести названия постов, которые последние комментировались.»

    вот так, если кому-то будет полезно:

    GROUP BY post_title

    ORDER BY comment_date_gmt DESC

    спасибо, за код!

  5. #10688 Inch в 21:46, 6 ноября 2010:

    Ответить | Цитировать

    нет, поторопился. не работает

  6. #10703 Алекс в 14:44, 14 ноября 2010:

    Ответить | Цитировать

    А возможно ли выводить не заголовок публикаций который прокомментировали, а непосредственно сам комментарий с возможностью перехода к записи по клику.

Добавить комментарий

имя:

e-mail:

сайт:

текст:

Подписаться, не комментируя