Статьи

Раскрытие секретов WordPress ‘Comments.php файла

WordPress, кажется, повсюду в наши дни, и это неудивительно с его простотой использования и простотой настройки. В этом уроке я расскажу о структуре comments.php темы WordPress по умолчанию и предоставлю вам различные фрагменты кода для облегчения создания скинов.

Для справки, я также включил небольшое оглавление.

  1. Бэкэнд PHP
  2. Общий код
    1. Предотвращение прямого доступа к comments.php
    2. Требуется ли пароль?
  3. Отображение комментариев
    1. Основные теги шаблонов комментариев
    2. Конечный результат
  4. Форма комментария
    1. Обзор условного заявления
    2. Вставка формы
  5. Некоторые маленькие хитрости
    1. Gravatars
    2. Номера комментариев
    3. Ссылки на комментарии
    4. Редактирование комментариев
    5. Чередование цветов для комментариев
    6. Отображение разрешенных тегов
    7. Комментарии RSS ссылка
  6. Вывод

Это необработанный код PHP, который делает вашу функцию comments.php файловой. Новичку это может показаться пугающим. Однако не волнуйтесь: с этим уроком все в вашем файле комментариев станет кристально чистым!


Эта строка кода не позволяет пользователям просматривать comments.php случайно. Эта страница предназначена для включения в страницу сообщения, а не отдельно. Вы можете считать это мерой безопасности. Внутри оператора вы можете вставить любое сообщение, которое вы хотите отобразить, человеку, просматривающему файл comments.php, предпочтительно оператор die .

Это утверждение (ну, на самом деле, 2, но имеет смысл, если вы рассматриваете их как единое целое), проверяет, требуется ли пароль для просмотра сообщения. Очевидно, что если у вас нет пароля для просмотра сообщения, вы также не можете просматривать комментарии.

Первый if проверяет, установлен ли пароль. Второй оператор if проверяет, есть ли cookie-файл с установленным паролем, и отображает соответствующее сообщение, когда его там нет. Вы можете настроить сообщение об ошибке, поместив все, что вы выберете, во второй оператор if .


Этот первый условный оператор ( if($comments) ) проверяет наличие комментариев, а затем просматривает их с помощью оператора foreach . Внутри оператора foreach вы заметите следующий условный оператор: if($comment->comment_approved == '0') . Это проверяет, был ли комментарий одобрен, и показывает сообщение, если оно еще не утверждено.

Примером этого может быть следующий фрагмент кода.

Чтобы сделать это функциональным фрагментом кода, вам нужно использовать теги шаблонов, предоставляемые WordPress.

Тег шаблона Описание
<?php comment_ID(); ?> идентификатор комментария
<?php comment_author(); ?> автор комментария
<?php comment_author_link(); ?> автор комментария, обернутый ссылкой на его сайт, если он указал один
<?php comment_type(); ?> тип комментария; pingback, trackback или комментарий
<?php comment_text(); ?> фактический комментарий
<?php comment_date(); ?> дата его публикации
<?php comment_time(); ?> время его публикации

Вставив это в comments.php, вы получите упорядоченный список с комментариями и необходимой информацией или отобразите сообщение о том, что комментариев нет.


Ты все еще следишь за мной? Хорошо! Мы почти там. Нам просто нужно обработать эту форму комментария … Хорошо, возможно я солгал о том, что почти был там. Форма комментария на самом деле является одной из самых сложных частей всего файла обложки comments.php.

Вы будете засыпаны несколькими условными утверждениями (требуется вход в систему, вы вошли в систему, …). В этой части большинство начинающих скинеров испытывают наибольшие затруднения: неправильное размещение элементов формы может вообще препятствовать работе формы, не приводя к конкретной ошибке PHP.

Чтобы дать вам представление об условных утверждениях, которые включены в форму комментария, я сначала объясню эти утверждения, а затем включу HTML-код, объясняющий, почему он должен быть там, где он есть.

Первое условное выражение, с которым вы сталкиваетесь, это <?php if(comments_open()) : ?> . Это в основном проверяет, открыты ли комментарии. Очевидно, что если комментарии закрыты, вы не можете оставлять комментарии и форма комментариев не нужна. Вы можете поместить сообщение, которое вы хотите отобразить, если комментарии закрыты между последними <?php else : ?> И
<?php endif; ?> <?php endif; ?> .

Второй условный оператор ( <?php if(get_option('comment_registration') && !$user_ID) : ?> ) <?php if(get_option('comment_registration') && !$user_ID) : ?> , нужно ли вам зарегистрироваться, чтобы <?php if(get_option('comment_registration') && !$user_ID) : ?> комментарии, и <?php if(get_option('comment_registration') && !$user_ID) : ?> ли вы в систему. Если условный оператор выполнен, скрипт должен отображать ссылку на место, где пользователи могут войти в систему. Если регистрация не требуется или вы уже вошли в систему, скрипт продолжит работу с else частью и отобразит форму.

Затем наше окончательное условное заявление проверяет, вошли вы в систему или нет Очевидно, что если вы уже вошли в систему, бесполезно снова вводить свое имя, адрес электронной почты и веб-сайт.

Поздравляем, мы просмотрели все условные выражения в файле comments.php. Теперь осталось только добавить туда форму.

Первое, что я могу услышать, вы думаете: где, черт возьми, эта форма начнется? Ну, вы просто должны следовать здравому смыслу. Второй условный оператор проверяет, должны ли вы войти в систему или нет, поэтому вам не нужно отображать форму до окончания этого оператора. Таким образом, вся форма находится внутри этого условного утверждения.

Я также добавил ссылку на страницу входа в систему, как я нашел в стандартном файле comments.php. Как я уже говорил, последний условный оператор проверяет, вошли ли вы в систему или нет. Очевидно, что поля ввода имени, адреса электронной почты и веб-сайта отображаются только в том случае, если вы не вошли в систему. Давайте добавим их туда!

Хорошо! Мы почти там! Нам просто нужно добавить несколько простых строк кода, таких как текстовая область и кнопка отправки. Они идут после последнего условного оператора, поскольку для этих элементов не имеет значения, вошли вы в систему или нет.

Этот код должен быть довольно понятным. Поле textarea для комментария, кнопка отправки, скрытое поле ввода с будущим идентификатором комментариев и фрагментом PHP ( <?php do_action('comment_form', $post->ID); ?> ) WordPress требует сделать функция формы комментария.

Вуаля! Это все, ребята! Теперь у вас есть полностью готовый файл comments.php. Просмотрите этот файл, чтобы получить весь необходимый код PHP и HTML. В конечном итоге вы должны сделать это (я просто заменил файл comments.php скина по умолчанию на наш и добавил к нему некоторые незначительные стили).

Предварительный просмотр комментариев

Конечно, теперь у вас есть только базовый файл comments.php. Есть много вещей, которые вы могли бы сделать, чтобы улучшить его. Я перечислю несколько небольших советов и приемов, которые помогут вам на вашем пути.

Начиная с WordPress 2.5, имеется собственный шаблонный шаблон WordPress для встраивания граватаров. Он вытягивает граватар из электронного письма, введенного посетителем Код для этого очень прост.

Вы можете заменить $author_email на изящную get_comment_author_email(); функция, $size — это высота (и ширина) аватара, а $default_avatar — это ссылка на изображение аватара по умолчанию (отображается, когда в комментаторе отсутствует граватар).

Вставьте этот код в цикл foreach который отображает комментарии. В результате получается изображение с классами avatar и avatar-$size (где $size — это указанный вами размер). С небольшим редактированием CSS вы можете получить что-то вроде этого:

Комментарий Граватары

Я специально пропустил заголовки в файле comments.php, который мы создали позже, так как полагал, что они приведут к избыточному коду в процессе обучения, который достаточно сложен, как он есть. Очевидно, я не забываю их все же.

Обычно у людей есть заголовок, отображающий что-то похожее на «3 комментария». Этого действительно легко достичь благодаря тегам шаблонов, которые предлагает WordPress.

Это довольно $zero_comments : $zero_comments — это текст, который отображается, когда нет комментариев, $one_comment когда есть один комментарий, и $more_comments когда есть несколько комментариев. Пример из реальной жизни будет выглядеть так:

Я использовал % для нескольких комментариев, так как функция comments_number затем заменяет % количеством комментариев (2, 3,…)

Используемый в нашем файле comments.php, вы получите что-то вроде этого:

Номера комментариев

Чтобы отобразить ссылку на часть комментариев (с количеством отображаемых комментариев), просто используйте следующий код.

Первые 3 параметра в этой функции совпадают с указанной выше функцией comments_number . $css_class — это, очевидно, класс css, который вы указываете тегу <a> а $comments_closed — это текст, который должен отображаться при закрытии комментариев. При применении этого к теме, это возможный способ использовать его.

Это даст вам ссылку с comments-link класса.

Иногда вам захочется сразу же отредактировать комментарий. К счастью, с помощью функции edit_comment_link вы можете легко перейти на нужную страницу, чтобы отредактировать ее, вместо того, чтобы перейти к своей панели администратора, чтобы, наконец, получить этот комментарий. Использование как таковое:

Вы должны поместить это в цикл комментариев foreach . Параметры вполне очевидны: $link_text — это текст привязки для ссылки редактирования, $before_link и $after_link соответственно текст или код, отображаемый до или после ссылки.

Это действительно позволяет легко изменить комментарий; Вы можете просто добавить небольшую ссылку «Изменить» к метаинформации вашего комментария (только для просмотра администратором). Вот как это может выглядеть:

Комментарий Редактировать ссылку

Возможно, вы захотите иметь чередующиеся цвета строк для ваших комментариев, чтобы сделать более четкое разделение. Делать это относительно легко. Сначала добавьте следующий код в верхнюю часть страницы:

Затем добавьте следующее внутри цикла foreach (снова). Вы можете просто заменить <li id="comment-<?php comment_ID(); ?>"> это:

Это даст каждому другому комментарию класс alt , что позволит изменить их внешний вид с помощью CSS.

Я решил создать для него функцию, чтобы в вашем файле темы было меньше беспорядка. Вы можете добавить определение функции в свой файл functions.php, если хотите, но для меня более разумно, чтобы оно было вверху вашей страницы.

Чередующиеся строки облегчают различение разных комментариев; после реализации вы можете получить что-то вроде этого:

комментарии альтернативного цвета

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

Затем вы просто получите список тегов, которые разрешены в ваших комментариях, например:

разрешенные теги

Чтобы получить ссылку на RSS-канал для комментариев к определенному сообщению, просто вставьте приведенный ниже код в файл comments.php в том месте, где вы хотите его разместить.

Затем просто замените $link_test текстом привязки для ссылки RSS.

Это может пригодиться, если вы хотите дать своим посетителям возможность подписаться на ленту комментариев для конкретной статьи или сообщения в блоге. Вы можете реализовать это так:

комментарии rss ссылка

Надеюсь, вам понравилась эта * хм * небольшая статья о создании скинов в вашем файле WordPress comments.php. Вы можете получить полный код здесь с включенными в него приемами:

  • Gravatars,
  • альтернативные цвета строк,
  • редактировать ссылку,
  • комментарии rss ссылка.

Очевидно, что ссылка на комментарии не включена, поскольку она должна использоваться внутри цикла.

Желаем удачи в ваших приключениях по шкуре WordPress!