Как вывести количество комментариев рядом ником комментатора

Как вывести количество комментариев рядом ником комментатора | n-wp.ru
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Чтобы посетители могли оценить активность разных комментаторов, можно выводить рядом с именем комментатора и количество написанных им комментариев. Я сделал это без плагинов.

Как вывести количество комментариев рядом ником комментатора

Про вывод количества комментариев рядом с именем комментатора я уже писал. Сейчас же хочу привести способ, который выводит количество комментариев в правильном русском склонении: 1 комментарий, 2 комментария, 6 комментариев, 21 комментарий.

Откройте файл functions.php, и добавьте в него:

function comment_count(){
   global $_comments_array, $comment;
   if(empty($comment->comment_author_email)) return;
   if(!isset($_comments_array)){
      global $wpdb;
      $tmp = $wpdb->get_results("SELECT P.comment_author_email, COUNT(*) 
                                 FROM wp_comments P
                                 WHERE P.comment_author_email IN (SELECT DISTINCT P2.comment_author_email 
                                                                  FROM wp_comments P2
                                                                  WHERE P2.comment_post_ID=".$comment->comment_post_ID." 
                                                                  ) 
                                 GROUP BY P.comment_author_email", ARRAY_N);
      $_comments_array = array();
      $a = array('комментарий','комментария','комментариев');
      $i = array (2, 0, 1, 1, 1, 2);
      foreach($tmp as $t){
         $num = (int)$t[1];
         $_comments_array[$t[0]] = $num.' '.$a[($num%100>4 && $num%100comment_author_email, $_comments_array)){
      echo $_comments_array[$comment->comment_author_email];
   }
}

Эта функция подсчитывает количество комментариев, оставленных комментатором в блоге, ориентируясь на его электронный адрес. Чтобы вывести результат подсчета, нужно в шаблон комментариев (обычно это comments.php) добавить:

</pre>
<p>Этот код нужно вставить сразу после кода, выводящего имя комментатора. Обычно имя комментатора выводится с помощью функции <</p>
<pre> inline="yes">

.

При подготовке этого материала мне помогла информация с этой и этой страниц.

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

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

  1. О прикольно.
    Прикручу себе! :)

    Ответить
  2. dimka

    А как такое реализовать на странице профиля (www.site.com/author/admin)?

    Ответить
  3. Артем

    Добавил в закладки, спасибо!

    Ответить
  4. Otshelnik-fm

    напишите что префикс базы данных нужно на свой поменять. 2 замены сделать где написано

    wp_comments
    Ответить
    1. Зачем менять? Я не менял префикс, и все прекрасно работает.

      Ответить
      1. Otshelnik-fm

        когда я писал прошлое сообщение – уже проверил что без смены префикса не работает. У меня таблицы не с wp_ начинаются.
        Сначала нашел другой код http://webpeppers.ru/140.html – тот тоже отказался работать. Помогло смена в коде вызова к бд.
        Ну собственно как хотите…

        Ответить
  5. dream

    Не выходит… Вставил функцию. Теперь в комменты закинуть

    <?php comment_count(); ?>

    Но там нету строки

    <?php comment_author(); ?>

    Вот. Помогите пожалуйста…

    <?php
    	if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
    		die ('Please do not load this page directly. Thanks!');
    	
    	if ( post_password_required() ) { ?>
    		<p class="nocomments">Эта запись под паролем. Введите пароль чтобы просмотреть комментарии.</p>
    	<?php
    		return;
    	}
    ?>
    
    <?php if ( comments_open() ) : ?>
    	<div id="respond">
    		<h3>Оставьте комментарий</h3>
    		
    		<div class="cancel-comment-reply">
    			<small><?php cancel_comment_reply_link(); ?></small>
    		</div>
    		
    		<?php if ( get_option('comment_registration') && !is_user_logged_in() ) : ?>
    			<p>Вы должны <a href="<?php echo wp_login_url( get_permalink() ); ?>">войти</a> чтобы оставить комментарий.</p>
    		<?php else : ?>
    			<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
    				<?php if ( is_user_logged_in() ) : ?>
    					<p>
    						Вы вошли как <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. 
    						<a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Выйти с аккаунта">Выйти »</a>
    					</p>
    				<?php else : ?>
    					<div class="left">
    						<label for="author">Имя <?php if ($req) echo "(required)"; ?></label>
    						<div class="field"><input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> /></div>
    					
    						<label for="email">Почтовый ящик (will not be published) <?php if ($req) echo "(required)"; ?></label>
    						<div class="field"><input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> /></div>
    						
    						<label for="url">Сайт</label>
    						<div class="field"><input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" tabindex="3" /></div>
    					</div>
    				<?php endif; ?>
    				<div class="<?php echo is_user_logged_in() ? '' : 'right' ?>">
    					<label for="comment">Комментарий</label>
    					<div class="textarea"><textarea name="comment" id="comment" cols="40" rows="10" tabindex="4" class="field"></textarea></div>
    				</div>
    				<div class="cl"> </div>
                    <input name="submit" type="submit" id="submit" tabindex="5" class="button <?php echo is_user_logged_in() ? 'userloggedbtn' : '' ?>" value="Добавить" />
    				<?php comment_id_fields(); ?>
    				<?php do_action('comment_form', $post->ID); ?>
    				<div class="cl"> </div>
    			</form>
    		<?php endif; // If registration required and not logged in ?>
    	</div>
    <?php endif; ?>
    
    <?php if ( have_comments() ) : ?>
    	<div id="comments">
    		<div class="navigation commentsnavigation">
    			<div class="cl"> </div>
    			<div class="alignleft"><?php previous_comments_link() ?></div>
    			<div class="alignright"><?php next_comments_link() ?></div>
    			<div class="cl"> </div>
    		</div>
    		<ol class="commentlist">
    			<?php wp_list_comments('callback=print_comment'); ?>
    		</ol>
    		<div class="navigation">
    			<div class="alignleft"><?php previous_comments_link() ?></div>
    			<div class="alignright"><?php next_comments_link() ?></div>
    		</div>
    	</div>
    <?php else : ?>
    	<?php if ( comments_open() ) : ?>
            <!-- If comments are open, but there are no comments. -->
    	 <?php else : // comments are closed ?>
    		<p class="nocomments">Комментарии запрещены.</p>
    	<?php endif; ?>
    <?php endif; ?>
    Ответить
    1. Otshelnik-fm

      поищите в functions.php

      Ответить
  6. dream

    Там только

    <?php comment_author_link() ?>

    Что же делать… :(

    Ответить
  7. dream

    Вывелось… Спасибо, OTSHELNIK-FM
    Просто я думал что будет иконка)
    А там просто текст)

    dream 9 комментариев

    Ответить
    1. Ну а кто вам мешает добавить иконку?

      Ответить
  8. dream

    Сделал) Спасибо)

    Ответить