У Вордпресса есть одна интересная особенность: при подключении шаблона comments.php он делает запрос в базу с целью вытащить эти самые комментарии. При этом Вордпрессу не важно есть ли комментарии у поста, а ведь к этому моменту он уже знает число комментариев!
В таблице постов есть поле с количеством комментариев. Оно, конечно, может оказаться неверным, ведь это всего лишь счетчик, который обновляется каждый раз при добавлении или удалении комментария, связанного с постом. Однако практика показывает, что в подавляющем большинстве случаев оно верное, а неверным оно может быть из-за неверной работы некоторых плагинов.
Шаблон comments.php обычно подключается функцией comment_template() из шаблона single.php или page.php. Чтобы подключить шаблон с комментариями только при их наличие, нужно в шаблонах single.php и page.php найти строчку, содержащую comment_template() и заменить ее на что-то подобное:
[php]<? if ( get_comments_number() ) comments_template() ?>[/php]
Тем самым мы подключаем шаблон комментариев только если оставлен хотя бы один комментарий.
Часто comments.php содержит еще и вывод формы для добавления комментариев, а значит если не будет комментариев — не будет и формы, так что давайте исправим этот недостаток.
Форма комментирования выводится функцией comment_form(). Найдите ее в шаблоне comments.php, и посмотрите, используются ли в ней аргументы и насколько их много. Например, в дефолтных темах Вордпресса эта функция вызывается без аргументов, а значит мы ее можем удалить из comments.php и вставить например в single.php.
Если аргументов много, как было у меня, то есть смысл вынести ее в отдельный файл и подключать этот файл через функцию get_template_part(). Создайте в папке вашей темы файл comments-form.php, добавьте в него вывод формы с вашими аргументами и сохраните. Далее в single.php добавьте:
[php]<? if ( comments_open() ) get_template_part( ‘comments’, ‘form’ ) ?>[/php]
Вот и все! Если комментирование поста не запрещено, будет подключаться файл comments-form.php с нашей формой!