В этой статье я расскажу о том, как создать свой собственный файл для комментариев (comments.php) для своей темы. Возможно, мой совет не идеален, но считаю, он стоит вашего внимания. Конечно, если у вас есть более яркий совет, жду ваших комментариев и готовых решений. Только не забудьте, чтобы вставить код в комментариях, добавьте ваш код между тегами:
Зачем нужно создавать в своей теме собственный файл для комментариев (comments.php), если сам WordPress выводит свою стандартную форму?
Действительно, WordPress выводит свою стандартную форму. Достаточно в файле «single.php» или «page.php» вызвать функцию готовой формы:
<?php comments_template(); ?>
Но вот теперь вопрос, если вы решите сделать какие-либо исправление в форме, например, захотите добавить какие-то css стили или смайлик, то как будете решать эту задачу?!
Вот по этой причине я рекомендую в своей теме создать свой файл для комментариев (comments.php) и делать там с формой все, что вздумается.
Итак, ближе к делу.
Перейдите по такому пути на вашем сайте: «wp-includes/theme-compat/» и откройте файл «comments.php». Скопируйте весь тот код .
Теперь перейдите в папку с вашей темой и создайте файл «comments.php». Вставьте в него скопированный код.
Закомментируйте или же удалите в коде строку №:71. Это функция, которая выводит стандартную форму для комментариев.
<?php /** * @package WordPress * @subpackage Theme_Compat * @deprecated 3.0 * * This file is here for Backwards compatibility with old themes and will be removed in a future version * */ _deprecated_file( /* translators: %s: template name */ sprintf( __( 'Theme without %s' ), basename( __FILE__ ) ), '3.0', null, /* translators: %s: template name */ sprintf( __( 'Please include a %s template in your theme.' ), basename( __FILE__ ) ) ); // Do not delete these lines 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"><?php _e('This post is password protected. Enter the password to view comments.'); ?></p> <?php return; } ?> <!-- You can start editing here. --> <?php if ( have_comments() ) : ?> <h3 id="comments"> <?php if ( 1 == get_comments_number() ) { /* translators: %s: post title */ printf( __( 'One response to %s' ), '“' . get_the_title() . '”' ); } else { /* translators: 1: number of comments, 2: post title */ printf( _n( '%1$s response to %2$s', '%1$s responses to %2$s', get_comments_number() ), number_format_i18n( get_comments_number() ), '“' . get_the_title() . '”' ); } ?> </h3> <div class="navigation"> <div class="alignleft"><?php previous_comments_link() ?></div> <div class="alignright"><?php next_comments_link() ?></div> </div> <ol class="commentlist"> <?php wp_list_comments();?> </ol> <div class="navigation"> <div class="alignleft"><?php previous_comments_link() ?></div> <div class="alignright"><?php next_comments_link() ?></div> </div> <?php else : // this is displayed if there are no comments so far ?> <?php if ( comments_open() ) : ?> <!-- If comments are open, but there are no comments. --> <?php else : // comments are closed ?> <!-- If comments are closed. --> <p class="nocomments"><?php _e('Comments are closed.'); ?></p> <?php endif; ?> <?php endif; ?> <?php comment_form(); ?>
Лично я ее закомментировал:
<?php //comment_form(); ?>
Теперь в самом низу вставляем нашу форму для комментариев:
<?php $fields = array( 'author' => '<p class="comment-form-author"><label for="author">' . __( 'Name' ) . ($req ? '<span class="required">*</span>' : '') . '</label><br><input ENGINE="text" id="author" name="author" class="author" value="' . esc_attr($commenter['comment_author']) . '" placeholder="" pattern="[A-Za-zА-Яа-я]{3,}" maxlength="30" autocomplete="on" tabindex="1" required' . $aria_req . '></p>', 'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email') . ($req ? '<span class="required">*</span>' : '') . '</label><br><input type="email" id="email" name="email" class="email" value="' . esc_attr($commenter['comment_author_email']) . '" placeholder="admin@stepkinblog.ru" maxlength="30" autocomplete="on" tabindex="2" required' . $aria_req . '></p>', 'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label><br><input type="url" id="url" name="url" class="site" value="' . esc_attr($commenter['comment_author_url']) . '" placeholder="stepkinblog.ru" maxlength="30" tabindex="3" autocomplete="on"></p>' ); $args = array( 'comment_notes_after' => '', 'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><br><textarea id="comment" name="comment" class="comment-form" cols="45" rows="8" aria-required="true" placeholder="Текст сообщения..."></textarea></p>', 'label_submit' => 'Отправить', 'fields' => apply_filters('comment_form_default_fields', $fields) ); comment_form($args); ?>
Результат:
Вот полностью готовый код файла «comments.php» для вашей темы:
<?php /** * @package WordPress * @subpackage Theme_Compat * @deprecated 3.0 * * This file is here for Backwards compatibility with old themes and will be removed in a future version * */ _deprecated_file( /* translators: %s: template name */ sprintf( __( 'Theme without %s' ), basename( __FILE__ ) ), '3.0', null, /* translators: %s: template name */ sprintf( __( 'Please include a %s template in your theme.' ), basename( __FILE__ ) ) ); // Do not delete these lines 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"><?php _e('This post is password protected. Enter the password to view comments.'); ?></p> <?php return; } ?> <!-- You can start editing here. --> <?php if ( have_comments() ) : ?> <h3 id="comments"> <?php if ( 1 == get_comments_number() ) { /* translators: %s: post title */ printf( __( 'One response to %s' ), '“' . get_the_title() . '”' ); } else { /* translators: 1: number of comments, 2: post title */ printf( _n( '%1$s response to %2$s', '%1$s responses to %2$s', get_comments_number() ), number_format_i18n( get_comments_number() ), '“' . get_the_title() . '”' ); } ?> </h3> <div class="navigation"> <div class="alignleft"><?php previous_comments_link() ?></div> <div class="alignright"><?php next_comments_link() ?></div> </div> <ol class="commentlist"> <?php wp_list_comments();?> </ol> <div class="navigation"> <div class="alignleft"><?php previous_comments_link() ?></div> <div class="alignright"><?php next_comments_link() ?></div> </div> <?php else : // this is displayed if there are no comments so far ?> <?php if ( comments_open() ) : ?> <!-- If comments are open, but there are no comments. --> <?php else : // comments are closed ?> <!-- If comments are closed. --> <p class="nocomments"><?php _e('Comments are closed.'); ?></p> <?php endif; ?> <?php endif; ?> <?php //comment_form(); ?> <?php $fields = array( 'author' => '<p class="comment-form-author"><label for="author">' . __( 'Name' ) . ($req ? '<span class="required">*</span>' : '') . '</label><br><input type="text" id="author" name="author" class="author" value="' . esc_attr($commenter['comment_author']) . '" placeholder="" pattern="[A-Za-zА-Яа-я]{3,}" maxlength="30" autocomplete="on" tabindex="1" required' . $aria_req . '></p>', 'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email') . ($req ? '<span class="required">*</span>' : '') . '</label><br><input type="email" id="email" name="email" class="email" value="' . esc_attr($commenter['comment_author_email']) . '" placeholder="admin@stepkinblog.ru" maxlength="30" autocomplete="on" tabindex="2" required' . $aria_req . '></p>', 'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label><br><input type="url" id="url" name="url" class="site" value="' . esc_attr($commenter['comment_author_url']) . '" placeholder="stepkinblog.ru" maxlength="30" tabindex="3" autocomplete="on"></p>' ); $args = array( 'comment_notes_after' => '', 'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><br><textarea id="comment" name="comment" class="comment-form" cols="45" rows="8" aria-required="true" placeholder="Текст сообщения..."></textarea></p>', 'label_submit' => 'Отправить', 'fields' => apply_filters('comment_form_default_fields', $fields) ); comment_form($args); ?>
Теперь вы сможете в форме делать свои изменения и не бояться, что после обновления вордпресс все ваши исправления в стандартной форме исчезнут.
Жду ваших идей в комментариях.
Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓
Последние новости категории:
Похожие статьи
Популярные статьи:
-
Как узнать id компьютера
Дата: 29 марта 2013
Прокомментировано:90
просмотров: 330346 -
Размеры форматов листов А0 – А7
Дата: 23 января 2013
Прокомментировано:3
просмотров: 274701 -
Смешные логические загадки с подвохом, отгадки прилагаются
Дата: 12 ноября 2014
Прокомментировано:5
просмотров: 222535 -
Готовые макеты блоков для веб-страниц на HTML и CSS
Дата: 25 июня 2014
Прокомментировано:23
просмотров: 187747 -
Установка windows 7 на ноутбук
Дата: 18 декабря 2012
Прокомментировано:169
просмотров: 186564
7 Ответов на комментарий - Как создать свой файл комментариев (comments.php) для своей темы.
Добавить комментарий
Метки: wordpress, без плагинов, комментарий
Привет Степан, очень интересно, надо будет как нибудь поэксперементировать. У меня к тебе вопрос: Вот поставил я плагин для вывода кода в постах как у тебя, заменил Вп-Синтакс, помнишь спрашивал у тебя, как ты выводишь код в комментах. Так вот, плагин поставил все нормально, в комментах если выводить код через теги как у тебя, код выводится, но без стилей плагина и получается не ахти. Может знаешь что нужно поковырять чтоб нормально было, ты же вроде больше с ворпресс дружишь. Буду примного благодарин твоим подсказкам.

А пост все же интересный, Спасибо. Обязательно попробую в свободное время попробовать покавырять свой блог на твоем примере, я вообще уже давно хотел поковырять комментарии, раньше был плагин для комментов, потом снес его и прописал сам свои стили и все равно что то не то, хочется как то по другому сделать комментарии.
Привет, Саш. Спасибо за комментарий. Если ты используешь плагин “WP Thread Comment” для древовидного комментариями, то в настройках есть возможность дописать стили.
Я удалил плагин “WP Thread Comment” и прописал сам свои стили. Я именно интересуюсь почему код вставляется через теги code ваш код /code, а стилей кода нет. В посте если выводить код, то стили плагина работают, а в комментариях нет, а вот у тебя если в комментах код написать через теги то стили от плагина будут. Почему такая фигня не знаешь?
Используй плагин “syntaxhighlighter”
Да я его и использую, я же написал что заменил WP-Syntax и поставил “syntaxhighlighter”. Код выводится в комментах через теги, но без стилей плагина, а когда выводишь код в посте, то все ровно. Почему так непойму
Твой сайт не доступен, хотел посмотреть все в живую.
Степан, а как в этот код комментариев добавить возможность ответа на комментарий?