Для давней задачки – создание Гостевой книги на 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 (в описанном примере – в обратном порядке).
Остальные комментарии к записям или другим страницам останутся в прежнем виде.
Леонид
25 Окт 2011Уточните, пожалуйста где и как указывается шаблон “guesbook”
Rubezahl
25 Окт 2011Леонид, для страниц wordpress можно указать шаблон. Доступна эта опция и в панели полного редактирования страницы и в панели редактирования свойств страницы.
картинка
Бывает так, что пункт меню для выбора шаблона не виден — тогда надо переподключить Вашу тему оформления сайта: включить стандартную и вернуть свою. У меня так несколько раз было. После этого меню выбора шаблонов для страниц появлялось.
Алексей
16 Ноя 2011У меня в файле comments.php стоит 32, ‘reply_text’=>’Ответитть на этот коментарий’)); ?>
А в page.php вообще нет.
Как то можно организовать гостевую?
Rubezahl
16 Ноя 2011В файле comments.php шаблона может использоваться для вывода списка комментариев более старый тэг, в котором нет параметра для изменения порядка вывода. Я редактировал старые темы — изменял тэги на аналогичные новые, в которых есть нужные мне параметры. Список тэгов тем есть в кодексе: http://codex.wordpress.org/Template_Tags
Если в теме нет page.php, то страницы выводятся прямо файлом index.php тогда и шаблон придется делать из index.php, удаляя из него все лишнее.
Алексей
16 Ноя 2011Весь код порезан. Коммент непонятным получился.
В общем у меня в этих файлах другой код совсем.
Success
7 мая 2012Я все сделала как тут написано… но у меня пустая страница отображается((( почему??? помогите пожалуйста!
alevit
29 Сен 2012А как вы решаете проблему индексации таких гостевых книг? Ведь по сути это огромная страница, слишком большая для индексации.
Rubezahl
1 Окт 2012Добрый день. Пока никак особо не решаю. Все мои Гостевые пока не настолько огромны, чтобы возникали проблемы с их индексированием. В принципе, в настройках WordPress есть разбиение комментариев на страницы, им, думаю, можно воспользоваться.
Denis
2 Окт 2012Спасибо. Всё работает, только не понял один момент.
Зачем задавать шаблон guestbook, если параметр для комментариев comments_gb.php вписывается в обычный page.php. То есть можно просто только на странице Гостевой книги оставить галочку «Разрешить комментарии».
Или создается новый файл page.php для гостевой книги… чет немного не понял)
Rubezahl
2 Окт 2012Denis, в обычном page.php остается прежний вид комментариев, с исходным comments.php. А шаблон guestbook создается (из стандартного page.hph) специально для страницы Гостевой. Тогда на обычных страницах будет порядок комментариев обычный, а в гостевой — вверху самые новые.
Denis
2 Окт 2012Идея очень хорошая.
Но в статье не очень понятно объяснено.
1. Создаем comments_gb.php, чтобы в комментариях сверху были новые комменты.
2. Вносим изменения в файл page.php — !Вопрос! — мы пересохраняем в новый файл или вносим изменения в текущий?
То есть page.php будет один?
Я просто внес изменения в текущий page.php, но не совсем пойму зачем указывать шаблон…
Rubezahl
2 Окт 2012По-моему, написано достаточно понятно — создаем шаблон guestbook на основе имеющегося page.php. Т.е. редактируем page.php и сохраняем отредактированный файл под другим именем, как шаблон для гостевой.
Denis
3 Окт 2012Вот это я и спрашивал — то есть мы сохраняем не в этом файле page.php, а сохраняем отдельный файл например page_gb.php.
Спасибо.
Евгений
6 Фев 2013Здравствуйте, Алексей! Вы случаем не знаете, что надо поправить, если я комментарии отключил в настройках, чтобы они не были в статьях и страницах, а в гостевой были. Как-то принудительно их включить через код в гостевой. Спасибо!
Rubezahl
6 Фев 2013Евгений, добрый день. Если в настройках отключены комментарии, то это распространяется по-умолчанию на все записи или страницы. Но для каждой из них можно попробовать их включить. В консоли посмотрите «свойства» страницы (гостевой) и включите именно для нее галку «разрешить комментарии».