Как вывести последние комментарии с аватарами без плагинов и виджетов (еще один способ)

Я уже писал об одном способе вывода последних комментариев без использования плагинов и виджетов. Способ действенный, но в нем нужно редактировать два файла. А вот еще способ вывода комментариев с аватарами без плагинов — в нем нужно отредактировать только один файл.

Откройте файл (обычно выводят комментарии в сайдбаре) и вставьте в него такой код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$query = "SELECT * from $wpdb->comments WHERE comment_approved= '1'
ORDER BY comment_date DESC LIMIT 0 ,5"
;
$comments = $wpdb->get_results($query);

if ($comments) {
    echo '<ul>';
    foreach ($comments as $comment) {
        $url = '<a href="'. get_permalink($comment->comment_post_ID).'#comment-'.$comment->comment_ID .'" title="'.$comment->comment_author .' | '.get_the_title($comment->comment_post_ID).'">';
        echo '<li>';
        echo '<div class="img">';
        echo $url;
        echo get_avatar( $comment->comment_author_email, $img_w);
        echo '</a></div>';

        echo '<div class="txt">Par: ';
        echo $url;
        echo $comment->comment_author;
        echo '</a></div>';
        echo '</li>';
    }
    echo '</ul>';
}
?>

За количество комментариев отвечает

1
DESC LIMIT 0 ,5

.

Типография в Москве осуществляет печать журналов буклетов. Современное оборудование, быстрое изготовление, гибкие цены. С 18 января 2010 года действует специальная скидка 35%!

Комментариев 10
  1. Вставил код в сайдбар, но выводится лишь аватарка и имя автора коммента, самого текста коммента нет.

    • Попробуйте коде убрать <div class="txt">

      • Эхх, убрал и убирал всю строку

        echo '<div class="txt">Par: ';[/cc]
        но результат один и тот же: полный беспредел и всё лезет в футер.
        
        А как у вас на http://123-box.ru/ реализовано выведение комментов - этим способом или тем, что был описан ранее (с правкой двух файлов)? Просто я вывожу сейчас через плагин WP-RecentComments, но готовлю смену шаблона на monochrome1000 (от  mono-lab как и Piano Black), где уже б хотелось обходится без плагина - может есть какие-то нюансы в этих шаблонах?
  2. Код я вставляю в сайдбар между разделами меню:

    <div class="side_box">
       <h3><?php _e('Обсуждение','monochrome'); ?></h3>
       <ul>
        <?php
    	$query = "SELECT * from $wpdb->comments WHERE comment_approved= '1'
                       ....
    echo '</ul>';
    	}
    	?>
       </ul>
       </div>[/cc]
    Просто в коде я профан, думал, что скопировал-вставил и всё работает ;)
    • Попробуйте вставить без

      1
      2
      3
      &lt;div class=&quot;side_box&quot;&gt;
         &lt;h3&gt;&lt;?php _e('Обсуждение','monochrome'); ?&gt;&lt;/h3&gt;
         &lt;ul&gt;

      ну и соответственно, без

      1
      2
         &lt;/ul&gt;
         &lt;/div&gt;

      В общем, только голый код.

      • Голый код дела не меняет – нет текста коммента, интересно: кто-то ещё сталкивался с подобным при использовании всего кода?

        • Мне удалось починить этот код так, что он выводит теперь и текст комментариев. Вот рабочий код:

          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
          <?php
          $query = "SELECT * from $wpdb->comments WHERE comment_approved= '1'
          ORDER BY comment_date DESC LIMIT 0 ,8"
          ;
          $comments = $wpdb->get_results($query);

          if ($comments) {

              foreach ($comments as $comment) {
                  $url = '<a href="'. get_permalink($comment->comment_post_ID).'#comment-'.$comment->comment_ID .'" title="'.$comment->comment_author .' | '.get_the_title($comment->comment_post_ID).'">';
                  echo '<table border="0" cellspacing="0" cellpadding="2" width="100%"><tbody><tr>';
                  echo '<td valign="top" width="50">';
                  echo '<div class="img">';
                  echo $url;
                  echo get_avatar( $comment->comment_author_email, $img_w);
                  echo '</a></div>';
                  echo '</td>';
                  echo '<td>';
                  echo '<div>';
                  echo $url;
                  echo $comment->comment_author;
                  echo ': <em>';
                  echo strip_tags(substr(apply_filters('get_comment_text', $comment->comment_content), 0, 120));
                  echo '… </em> ';
                  echo '</a></div>';
                  echo '</td>';
                  echo '</tr></tbody></table>';
              }

          }
          ?>
          • Заработало :) , отлично, спасибо, так что обновляйте статью.

            DESC LIMIT 0 ,8 – здесь задается кол-во выводимых комментов, а comment_content), 0, 120)); – кол-во символов?

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