Создаем, настраиваем и оформляем шаблон комментариев.
В шаблоне верстки (записи или страницы), где нужно выводить ставим
<?php comments_template(); ?>
В functions.php
// шаблон вывода комментариев
function mytheme_comment($comment, $args, $depth){
$GLOBALS['comment'] = $comment; ?>
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
<div class="comment-block">
<div class="comment-autor">
<?php echo get_avatar($comment,$size='75',$default='<path_to_url>' ); ?>
<?php printf(__('<cite class="fn">%s</cite> '), get_comment_author_link()) ?>
</div>
<?php if ($comment->comment_approved == '0') : ?>
<em><?php _e('Your comment is awaiting moderation.') ?></em>
<br/>
<?php endif; ?>
<div class="comment-content">
<?php comment_text() ?>
<div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date(), get_comment_time()) ?></a><?php edit_comment_link(__('(Edit)'),' ','') ?></div>
<div class="reply"><?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?></div>
</div>
</div>
<?php }
В шаблоне вывода комментариев comments.php
<?php if ( post_password_required() )
{ return; }
?>
<?php if ( have_comments() ) : ?>
<div id="comments">
<h2 class="comments-title">
<?php printf( _nx ( 'Один комментарий к записи “%2$s”', '%1$s комментариев к записи “%2$s”', get_comments_number(), 'comments title', 'twentyfifteen' ),
number_format_i18n( get_comments_number() ), get_the_title() ); ?>
</h2>
<ol class="comment-list">
<?php
wp_list_comments( array(
'style' => 'ol',
'short_ping' => true,
'callback' => 'mytheme_comment'
) );
?>
</ol>
<?php endif; ?>
</div>
<?php if ( ! comments_open() && get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) : ?>
<p class="no-comments"><?php _e( 'Comments are closed.' ); ?></p>
<?php endif; ?>
<?php comment_form(); ?>
CSS
/* Комментарии */
#comments {
width: 90%;
padding: 2% 5%;
text-align: left;
float: left;
background-color: rgb(187, 255, 203);
}
.comments-title {float: left; text-align: center; width: 100%; margin: 0 0 2% 0;}
.comment-block {
width: 100%;
float: left;
box-shadow: 0px 0px 10px #4F8A5D;
border-radius: 5px;
background-color: #fff;
overflow: hidden;
}
.comment-autor {width: 15%; float: left;}
.fn {
width: 100%;
float: left;
font-size: 12px;
text-align: center;
color: #fff;
background-color: rgb(60, 60, 60);
}
.comment-content {width: 85%; float: left;}
.comment-content p {float: left; width: 90%; padding: 2% 5%;}
.commentmetadata {float: left; font-size: 12px; padding: 0 0 2% 5%; max-width: 50%;}
.reply {float: right; font-size: 12px; padding-right: 5%;}
.comment-list li {margin: 1% 0; list-style:none; width: 100%; float: left;}
ol .children {float: right; padding: 0 0 0 40px;}
ol .children li {margin: 0.5% 0;}
#respond {
text-align: left;
float: left;
width: 90%;
padding: 2% 5%;
margin: 0;
background-color: lavender;
}
Склонение слова «комментарий»
В файл functions.php
function plural_form($number, $after) {
$cases = array (2, 0, 1, 1, 1, 2);
echo $number.' '.$after[ ($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)] ];
}
В шаблоне где нужно выводить:
<?php
plural_form(
get_comments_number(),
/* варианты написания для количества 1, 2 и 5 */
array('комментарий','комментария','комментариев')
);
?>
или если нужен и 0 результат:
<?php
if (get_comments_number() == 0) {
echo 'Нет комментариев';
} else {
plural_form(
get_comments_number(),
/* варианты написания для количества 1, 2 и 5 */
array('комментарий','комментария','комментариев')
);
}
?>
Таким же образом можно изменять окончания и для других случаев (результаты поиска, количество товаров и т.д.)
Источник: http://dimox.name/plural-form-of-nouns/
Можно к форме комментария добавить панель форматирования
Выводим количество комментариев
<p><i class="fa fa-comment"></i> <a href="<?php comments_link(); ?>"><?php comments_number('0', '1', '%'); ?></a></p>
Выводим количество комментариев с проверкой: есть ли хотя бы 1 комментарий
<?php
$num_comments = get_comments_number();
if ($num_comments < 1) { ?>
нет комментариев
<?php } else { ?>
<p><i class="fa fa-comment"></i> <a href="<?php comments_link(); ?>"><?php comments_number('0', '1', '%'); ?></a></p>
<?php } ?>
Упрощенный код условия
<?php $num_comments = get_comments_number(); if ($num_comments >= 1) { ?>
<p><i class="fa fa-comment"></i> <a href="<?php comments_link(); ?>"><?php comments_number('0', '1', '%'); ?></a></p>
<?php } ?>
Готовая форма комментариев
Доработанный шаблон комментирования (comments.php):
<?php if( comments_open($post->ID) ) : ?>
<div id="comments">
<?php if ( post_password_required() ) { return; } ?>
<?php $defaults = array(
'fields' => array(
'author' => '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30" placeholder="ваше имя" />',
'email' => '<input id="email" name="email" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30" placeholder="e-mail" aria-describedby="email-notes" />',
),
'comment_field' => '<textarea id="comment" name="comment" cols="45" rows="4" aria-required="true" required="required" placeholder="комментарий"></textarea>',
'must_log_in' => '<p class="must-log-in">' . sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink() ) ) ) . '</p>',
'logged_in_as' => '<p class="logged-in-as">' . sprintf( __( '<a href="%1$s" aria-label="Logged in as %2$s. Edit your profile.">Logged in as %2$s</a>. <a href="%3$s">Log out?</a>' ), get_edit_user_link(), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink() ) ) ) . '</p>',
'comment_notes_before' => '', // текст перед формой комментирования
'comment_notes_after' => '',
'id_form' => 'commentform',
'id_submit' => 'submit',
'class_form' => 'comment-form',
'class_submit' => 'submit',
'name_submit' => 'submit',
'title_reply' => __( 'Leave a Reply' ),
'title_reply_to' => __( 'Leave a Reply to %s' ),
'title_reply_before' => '<h3 id="reply-title" class="comment-reply-title">',
'title_reply_after' => '</h3>',
'cancel_reply_before' => ' <small>',
'cancel_reply_after' => '</small>',
'cancel_reply_link' => __( 'Cancel reply' ),
'label_submit' => __( 'Post Comment' ),
'submit_button' => '<input name="%1$s" type="submit" id="%2$s" class="%3$s" value="Комментировать" />',
'submit_field' => '<p class="form-submit">%1$s %2$s</p>',
'format' => 'xhtml',
);
comment_form( $defaults ); ?>
<?php if ( have_comments() ) : ?>
<p class="comments-title">
<?php if( function_exists('plural_form') ) {
plural_form(
get_comments_number(),
array('комментарий','комментария','комментариев')
);
} ?>
</p>
<ol class="comment-list">
<?php if( function_exists('mytheme_comment') ) {
wp_list_comments( array(
'style' => 'ol',
'short_ping' => true,
'callback' => 'mytheme_comment'
) );
} ?>
</ol>
<?php else: ?>
<p class="comments-title">Пока нет комментариев. Будь первым!</p>
<?php endif; ?>
<?php paginate_comments_links(); ?>
</div>
<?php elseif ( !comments_open() ) : ?>
<p class="no-comments"><?php _e( 'Comments are closed.' ); ?></p>
<?php endif; ?>
[site-socialshare]


выложите скриншоты как оно выглядит
Форма комментирования, которая установлена на этом сайте и сделана по этой инструкции.
Добрый день. Подскажите как сделать чтобы форма комментариев была над комментриями (как у вас )
Выложил свой шаблон комментариев (см. выше под заголовком Готовая форма комментариев). По сути в выводе стоит сначала форма комментирования, а потом комментарии.
Спасибо.
Большое спасибо!
Добрый день. Спасибо за инструкцию, но кнопка «ответить » не работает, как поправить?
Респект тебе за код
как добавить свой класс внутр li?
Форма комментирования, которая установлена на этом сайте и сделана по этой инструкции.
Да. Но конечно прошло уже много времени, может что-то и дорабатывал.
Спасибо большое!
lmzckm mz; m