Продолжим рассматривать файл comments.php шаблона Wordpress. Сегодня поговорим о форме для комментирования.
Традиционно так сложилось, что форма для комментирования состоит из четырех полей: имя комментатора, его e-mail, его сайт (если есть) и, наконец, непосредственно сам текст комментария. Первые два поля и поле для текста обязательно должны быть заполнены, иначе движок выдаст ошибку. Поле для адреса сайта является не обязательным. Сейчас некоторые блоггеры намеренно удаляют это поле из файла comments.php, пытаясь таким образом бороться со спамом. Это, конечно же, их дело. Скажу лишь, что на работоспособность блога это никак не влияет.
Как и любая форма в HTML форма для комментов также начинается с тэга <form> и заканчивается тэгом </form>. Вот в этих пределах и будем ковырять файл comments.php. Внутри формы кроме самих полей может быть добавлено много всякого. Например, во многих шаблонах код формы начинается с абзаца с приветствием и ссылками для авторизации (входа) и выхода. Вы можете спокойно добавлять здесь свой текст. Например, краткий свод правил комментирования из 193 пунктов:
<p>Приветствую вас, <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Выйти">Выйти »</a></p>
Иногда попадается такая конструкция:
<!-- <p><small><strong>XHTML: </strong> You can use these tags: <code><?php echo allowed_tags(); ? > </code></small></p>-->
Означает она просто разрешение комментаторам на использование некоторых HTML тэгов в своих комментах. Строка кода закомментирована знаками <!– –> и поэтому по-умолчанию не видна. Стоит их убрать, как строчка появится под окном для текста комментария. Естественно, вы можете переписать ее по-русски и добавить, что спамеров отстреливаете еще на подходе.
Далее после приветствия идут непосредственно поля формы. Каждое из них имеет свой уникальный номер (tabindex=”1″ и т.д.):
<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ? >" size="40" tabindex="1" /> <label for="author">Имя <?php if ($req) echo "(обязательно)"; ? > </label></p>
Соответственно, если вы добавляете новое поле (например, для работы плагина математической антиспам-капчи), то нумерация не должна повторяться или меняться местами. Скажем, если вы добавили поле для ввода капчи сразу после поля с сайтом, то номер его должен быть tabindex=”4″. Номера же поля для комментов и кнопки отправки соответственно должны сменить номера с 4 и 5 на 5 и 6.
Далее. Что можно еще сделать с полями ввода информации? В предложенном выше варианте поле и текст описания к нему будут вытянуты в одну строку:

Если код прописать таким способом (встречается чаще всего в шаблонах):
<p><label for="author">Имя - <?php if ($req) echo "Обязательно"; ? > </label><br />
<input type="text" name="author" id="author" value="<?php echo $comment_author; ? >" size="40" tabindex="1" /></p>
То выглядеть форма будет так:

На что здесь стоит обратить внимание.
Во-первых, текст описания. Буржуи были не дураки, придумав добавлять к описаниям полей имени и мыла слово “Обязательно” (required). Ибо не все читатели знают порядки, устанавливаемые движком Wordpress. И если, к примеру, чел пишет коммент, используя браузер ИЕ, и забудет вписать свой е-мейл, то при попытке отправить комментарий получит сообщение об ошибке, а коммент, долго и тщательно продумываемый и рожденный в муках, будет бесследно утерян. Поэтому предупрежден — вооружен!
Во-вторых, если присмотреться внимательно, то у каждого поля в форме есть свой идентификатор id. Используя их, можно прописать в файле стилей CSS для каждого свой индивидуальный стиль отображения. Это очень удобно, например, когда вам надо, чтобы кнопка отправки выглядела несколько иначе, нежели сами поля формы. Я имею в виду, что у всех полей (включая и кнопку) используется стандартный тэг input. И если вы в стилях пропишете правила именно для input, то и поля и кнопка будут выглядеть одинаково. Улавливаете?
Еще пара замечаний напоследок:
1. Если вы используете плагин для подписки на комментарии (subscribe-to-comments), то теперь уже не нужно добавлять в файл comments.php строку:
<?php show_subscription_checkbox(); ? >
Сейчас плагин добавляет ее автоматически.
2. Если хотите сделать окно для текста комментария крупнее (по высоте), то в строке:
<p class="contain"><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>
Проставьте для свойства rows большее значение (по-умолчанию там 10).
В следующий раз рассмотрим подробно файл сайдбара(ов) — sidebar.php





Здравствуйте, а как манипулировать формой в WP3 (стандатрная тема), там в файле comments.php, совсем все по другому :(
Ответить
Игорь Квентор 16.01.2011
@kit, к сожалению с 3 версией движка я не работаю, поэтому что там и как сказать не могу.
Ответить
подскажите плиз где можно взять стандартный полный comments.php для WP
Ответить
Игорь Квентор 16.01.2011
@Андрей, в теме default
Ответить
Здравствуйте! А подскажите, можно ли в стандартную форму комментирования добавить произвольное поле, скажем для ввода номера телефона? И если можно, то как это сделать без использования плагинов комментирования.
Ответить
Игорь Квентор 11.02.2011
@Валерий, здравствуйте! Если знаете php, то почему бы и нет. Можно и плагин написать под это дело. Но я в этом не разбираюсь.
Ответить
Доброе утро, Игорь! На сайте не выводится форма комментирования непосредственно к постам (к страницам есть). Вроде в комментс.пхп все правильно прописано, в шаблоне тоже есть указание на вывод комментариев. Не могу разобраться. Заранее благодарен.
Ответить
Игорь Квентор 02.04.2011
@Дмитрий, по ссылке в вашем имени на блоге все работает
Ответить
Дмитрий 02.04.2011
где? Форма есть только к странице (в понятии wp - страницы и записи). А вот к любому из постов (записей) - нет. Только нерабочая кнопка “комментарии” и все.
Ответить
Игорь Квентор 02.04.2011
@Дмитрий, ваш пост “Ванна Клеопатры” - http://selflovers.ru/?p=77
См. принтскрин: http://img824.imageshack.us/i/samplelt.jpg/
В чем проблемы?
Ответить
Дмитрий 03.04.2011
@Игорь Квентор, отчасти разобрался. Я просто искал формы ввода комментариев в общем списке записей, а надо было заходить в конкретную и там все в порядке. Только теперь другое “НО” (которое и было причиной того, что я не видел форму) - скорость интернета у меня минимум 54 мб/сек, страница по приведенной Вами ссылке загружается у меня чуть больше 1 минуты (остальные страницы открываются в лет). Т.е. очень сильно “лагают” все ссылки, связанные со входом в конкретную запись. Если сможете подсказать в чем дело, буду благодарен!
Ответить
Игорь Квентор 04.04.2011
@Дмитрий, увы, здесь я не советчик. Это скорее вопрос к вашему хостеру, либо с количеством подключенных плагинов переборщили.
Ответить