Для давней задачки – создание Гостевой книги на WordPress – сегодня нашлось новое решение. В принципе, Гостевая – это страница без особого контента с разрешенными комментариями к ней. Обычно в Гостевой самые новые комментарии располагаются наверху всего списка. По умолчанию в WordPress порядок комментариев не такой: старые – вверху, новые – внизу. С версии WP 3.1.1 есть возможность поменять общие настройки порядка вывода всех комментариев в блоге (в консоли администрирования -> Настройки обсуждения).
Но, если хочется в записях оставить обычный порядок, а только для Гостевой сделать обратный, то приходится искать решение.
Раньше я использовал для этого специальный плагин Reverse Order Comment. Но этот плагин не позволяет работать с древовидными комментариями (когда нужна возможность ответить). Поэтому, там где была нужна древовидность, я отказался от этого плагина.
Сегодня я нашел возможность создать Гостевую с обратным порядком записей и сохранением древовидности без каких-либо плагинов.
Для этого необходимо:
1. Из файла comments.php темы Вашего блога сделать новый файл для комментариев Гостевой, например comments_gb.php, в котором в строке:
<?php wp_list_comments(); ?>
нужно добавить параметр, выдающий обратный порядок комментариев:
<?php wp_list_comments('reverse_top_level=true'); ?>
Этот и остальные параметры тэга wp_list_comments() описаны здесь (кодекс WordPress)
2. Создать шаблон Гостевой из файла page.php темы Вашего блога. Добавить в его начале код:
<?php /* Template Name: guestbook */ ?>
а в строке:
<?php comments_template(); ?>
нужно добавить параметр:
<?php comments_template('/comments_gb.php'); ?>
т.е. указать, какой файл отвечает за вывод комментариев в Гостевой. В примере – созданный в п.1 файл comments_gb.php
3. Новые файлы закачиваются на сервер в тему оформления блога
4. Теперь создается новая страница в блоге с названием “Гостевая”. Для ней указывается шаблон “guesbook”. Теперь эта страница будет отображать комментарии так, как Вы описали в файле comments_gb.php (в описанном примере – в обратном порядке).
Остальные комментарии к записям или другим страницам останутся в прежнем виде.
Уточните, пожалуйста где и как указывается шаблон “guesbook”
Леонид, для страниц wordpress можно указать шаблон. Доступна эта опция и в панели полного редактирования страницы и в панели редактирования свойств страницы.
картинка
Бывает так, что пункт меню для выбора шаблона не виден — тогда надо переподключить Вашу тему оформления сайта: включить стандартную и вернуть свою. У меня так несколько раз было. После этого меню выбора шаблонов для страниц появлялось.
У меня в файле comments.php стоит 32, ‘reply_text’=>’Ответитть на этот коментарий’)); ?>
А в page.php вообще нет.
Как то можно организовать гостевую?
В файле comments.php шаблона может использоваться для вывода списка комментариев более старый тэг, в котором нет параметра для изменения порядка вывода. Я редактировал старые темы — изменял тэги на аналогичные новые, в которых есть нужные мне параметры. Список тэгов тем есть в кодексе: http://codex.wordpress.org/Template_Tags
Если в теме нет page.php, то страницы выводятся прямо файлом index.php тогда и шаблон придется делать из index.php, удаляя из него все лишнее.
Весь код порезан. Коммент непонятным получился.
В общем у меня в этих файлах другой код совсем.
Я все сделала как тут написано… но у меня пустая страница отображается((( почему??? помогите пожалуйста!
А как вы решаете проблему индексации таких гостевых книг? Ведь по сути это огромная страница, слишком большая для индексации.
Добрый день. Пока никак особо не решаю. Все мои Гостевые пока не настолько огромны, чтобы возникали проблемы с их индексированием. В принципе, в настройках WordPress есть разбиение комментариев на страницы, им, думаю, можно воспользоваться.
Спасибо. Всё работает, только не понял один момент.
Зачем задавать шаблон guestbook, если параметр для комментариев comments_gb.php вписывается в обычный page.php. То есть можно просто только на странице Гостевой книги оставить галочку «Разрешить комментарии».
Или создается новый файл page.php для гостевой книги… чет немного не понял)
Denis, в обычном page.php остается прежний вид комментариев, с исходным comments.php. А шаблон guestbook создается (из стандартного page.hph) специально для страницы Гостевой. Тогда на обычных страницах будет порядок комментариев обычный, а в гостевой — вверху самые новые.
Идея очень хорошая.
Но в статье не очень понятно объяснено.
1. Создаем comments_gb.php, чтобы в комментариях сверху были новые комменты.
2. Вносим изменения в файл page.php — !Вопрос! — мы пересохраняем в новый файл или вносим изменения в текущий?
То есть page.php будет один?
Я просто внес изменения в текущий page.php, но не совсем пойму зачем указывать шаблон…
По-моему, написано достаточно понятно — создаем шаблон guestbook на основе имеющегося page.php. Т.е. редактируем page.php и сохраняем отредактированный файл под другим именем, как шаблон для гостевой.
Вот это я и спрашивал — то есть мы сохраняем не в этом файле page.php, а сохраняем отдельный файл например page_gb.php.
Спасибо.
Здравствуйте, Алексей! Вы случаем не знаете, что надо поправить, если я комментарии отключил в настройках, чтобы они не были в статьях и страницах, а в гостевой были. Как-то принудительно их включить через код в гостевой. Спасибо!
Евгений, добрый день. Если в настройках отключены комментарии, то это распространяется по-умолчанию на все записи или страницы. Но для каждой из них можно попробовать их включить. В консоли посмотрите «свойства» страницы (гостевой) и включите именно для нее галку «разрешить комментарии».