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


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

Чтобы использовать такую возможность в своем блоге, я нашел плагин: 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 = ''.$comment->comment_author.' - '.$comment->post_title.', '.comm_date($comment->comment_date_gmt);
$out .= "\n\t".'

  • '.$tpl.'
  • ';
    }
    $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";
    }

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

    Работа с функцией очень проста. Для просмотра последних комментариев, в любом месте вашего шаблона вставьте:

    Вывести 20 последних комментариев:

    Для дальнейшей работы с комментариями без вывода:

    Использовать 20 последних комментариев для дальнейшей обработки.

    Каждый комментарий выводится следующей строчкой:

    $tpl = ''.$comment->comment_author.' - '.$comment->post_title.', '.comm_date($comment->comment_date_gmt).';';

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

    • $comment->comment_author — Автор комментария;
    • $comment->comment_ID — Идентификатор (ID) комментария;
    • $comment->post_title — Название статьи данного комментария;
    • comm_date($comment->comment_date_gmt) — Дата вывода комментария

    Есть ошибки в коде? Можно или безопасно использовать такую конструкцию?

    Комментарии — 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:

    сайт:

    текст:

    Subscribe without commenting