Quantcast
Channel: Блог Интернет Технологий »комментарии
Viewing all articles
Browse latest Browse all 5

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

$
0
0


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

Чтобы использовать такую возможность в своем блоге, я нашел плагин: 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) — Дата вывода комментария

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


Viewing all articles
Browse latest Browse all 5

Latest Images

Trending Articles





Latest Images