Реализация раздела «Вопрос-ответ» на сайте

Вопрос-ответ на сайте с плагином для WordPress
Было дело, задумался о том, чтобы на сайте сделать раздел «Вопрос-ответ». Для чего он нужен? Ну, например, чтобы посетители не писали на почту с вопросами (если этих вопросов очень много), а задавали их в этом разделе. Или самому выносить самые интересные часто-задаваемые вопросы в отдельную категорию.

Еще можно в такой раздел забрасывать НЧ-запросы (собирая больше трафика) по которым попадают на сайт, потому как вопросы могут быть несерьезными, или которые не тянут на полноценную статью.

Но тут нужно быть осторожным: не плодить пустых страниц. Если создается вопрос, то чтобы там хотя бы был текст минимум на 300 символов и обязательно ответ, не меньшего объема.

На форуме Webmasters.ru была такая тема. Искать сейчас эту ветку не буду. Там человек ответил, что можно реализовать это дело с помощью плагина User Submitted Posts на WordPress-е.

На одном своем сайте я реализовал данную систему вопросов-ответов и она хорошо себя зарекомендовала. Поэтому решил еще на паре сайтов сделать и параллельно написать эту подробную статью в виде инструкции.

Требования к разделу с вопросами и ответами

Для начала определимся, какие задачи перед нами стоят:

  1. Любой незарегистрированный посетитель может добавить вопрос на сайт;
  2. Не только админ, но и любой желающий может ответить на вопрос;
  3. Посты от пользователей должны попадать в БД сайта как нормальные статьи, в отдельный раздел (или основные разделы по желанию админа);
  4. Посты должны попадать на модерацию;
  5. Чтобы пользователь мог добавить картинку к посту;
  6. Вопросы НЕ должны попадать в виде анонса на главную страницу, чтобы не засорять её;
  7. Нужна возможность вывода блока последних, или самых обсуждаемых вопросов, в каком-либо месте на сайте.

Если у вас сайт на WordPress (а большинство вебмастеров используют именно эту CMS для своих статейников), то реализовать это всё можно с помощью плагина и некоторых ручных правок.

Реализация с помощью плагина User Submitted Posts + дополнительные функции WP

Я думаю любой сможет добавить данный плагин на WordPress, установить и активировать. Поэтому останавливаться на этом не буду. Делаем это и идем дальше. Про его настройки я напишу чуть ниже, т.к. там действительно их много и есть свои нюансы.

Создаем отдельные страницы и разделы

Покажу на примере своего блога, чтобы вам далеко не ходить smile , а мне, чтобы не палить другой какой-то свой сайт.

Шаг 1. Добавляем новую (новые) категорию, в которую будут попадать вопросы, и, соответственно, выводится в этом разделе.

Но я создам не просто категорию, а сделаю одну основную, а в ней подразделы. На случай, если вопросы будут разделены на какие-то тематические ветки.

Пример, создаю основной раздел «Форум» (forums). Можно назвать «Вопрос-ответ». А подкатегории создал такие: «Партнерские программы» (partnerskie-programmy) и «Статейные сайты» (stateiniki).

2-add-cat-min

После создания рубрик, сразу же посмотрите их ID (наведя на ссылку, внизу браузера будет показываться, вот СКРИН) и запишите себе. У меня это 78, 79, 80.

Шаг 2. Добавляем новую страницу для формы (я её назвал «Задайте вопрос»),
и вставляем туда тег [user-submitted-posts] .

1-add-vopros

Шаг 3. Создаем новую страницу, на которую пользователь будет перенаправлен после добавления поста. Она не обязательная (можно перенаправить в общий раздел), но я сделаю для удобства юзера. Также, если у вас стоит плагин All in One SEO Pack, то ставим для этой страницы запрет от индексации.

spasibo-za-vopros-min

spasibo-za-vopros-2-min

Настраиваем плагин User Submitted Posts

Надо убрать всё лишнее. Заходим в настройки плагина, разворачиваем вкладку «Plugin Settings» и делаем все как у меня скриншотах.

3-setting-1-min

Если на скриншотах вы не нашли некоторых полей, то значит их и не нужно настраивать, или не обязательно.

Для поля «Ссылка перенаправления» ставим ссылку на страницу, которую мы ранее создали и закрыли от индексации. Я туда вставил «http://seodnevnik.ru/forum/spasibo-za-vopros».
Также можно переписать английский текст на русский.

3-setting-999-min

3-setting-3-min

Можно разрешить добавление картинок к добавляемым постам и сделать соответствующие настройки, а можно не заморачиваться.

3-setting-4-min

Разворачиваем настройки для выбора категорий и отмечаем те, в которые вы разрешаем добавлять вопросы пользователям.

3-setting-5-min

Сохраняем и идем дальше.

Давайте перейдем после этого на страницу добавления вопросов http://seodnevnik.ru/forum/vopros и посмотрим что получилось.

4-rusult-1-min

4-rusult-2-min

Я сделал рамку вокруг текстовой области, добавив в style.css стиль:

.wp-editor-container { border: 1px solid #ddd;}

Уже неплохо, но есть еще простор для творчества. Например, изменить надпись на кнопке, которая довольно странная по-умолчанию smile.

Давайте протестируем форму и добавим тестовый пост. После добавления он попадает в общую ленту статей вам на утверждение, и в категорию, которую выбрал пользователь.

5-utverzhdenie-min

Идем дальше.

Убираем вывод постов из пользовательских рубрик на главной

Чтобы посты от пользователей не показывались на главной, в файл functions.php добавляем этот код:

// убираем вывод постов из этих рубрик на главной
function hidecategory($query) {
if ( $query->is_home ) {
   $query->set('cat','-78, -79, -80');
}
   return $query;
}
add_filter('pre_get_posts', 'hidecategory');

Если не хотим, чтоб они также не попадали в RSS, то тогда вставляем этот код (вместо того, что выше):

// убираем вывод постов из этих рубрик на главной и в RSS
function hidecategory($query) {
if ($query->is_feed || ($query->is_home && !(is_paged()))) { 
   $query->set('cat','-78, -79, -80');
}
   return $query; 
}
add_filter('pre_get_posts','hidecategory');

Помните про ID категорий, про которые я писал в середине статьи? Их мы в этом коде и указываем. В своем случае я указал -78, -79, -80.

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

6-opublikovano-min

А перейдя в основную категорию и подкатегориях, соответственно выводятся все вопросы.

6-opublikovano-2-min

Но это еще не все. Мы хотим чтобы на странице поста показывалось кто автор, кнопка «Добавить свой вопрос», а также вывод других вопросов из этой категории.

Ну что же, давайте реализуем задуманное.

Вывод автора и постов из нужных категорий на странице вопроса

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

Открываем файл single.php (возможно у вас будет другой), который отвечает за вывод поста и вставляем после отображения основного контента (ищите строку с функцией the_content и вставляйте после неё ):

<?php if( in_category( array( '78', '79', '80' ) )){ ?>

	<div style="font-size:16px;text-align:right; margin-top:30px;">Автор: <?php the_author(); ?></div>
	
	<b>Другие вопросы:</b>
	<ol>					
	<?php $my_posts = get_posts('numberposts=5&category=78,79,80'); foreach ($my_posts as $post) : setup_postdata($post); ?>
	<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
	<?php endforeach; ?>	
	</ol>
	
<?php } ?>

* 78,79,80 меняем на ID своих рубрик.
Стили можно вынести в файл style.css, но в данном примере я не заморачивался.

Получаем такой результат:
7-author-related-min

Вывод кнопки «Задать свой вопрос»

Открываем файл archive.php (зависит от шаблона; нужен файл через который выводятся посты в категории) и вверху (перед циклом while) добавляем код:

<?php if( in_category( array( '78', '79', '80' ) )){ ?>
    <div class="d-add-vopros">
        <div class="add-vopros"><a href="http://seodnevnik.ru/forum/vopros">Задать свой вопрос</a></div>
    </div>
<?php } ?>

В style.css добавляем стили для ссылки. Чисто для теста набросал такие стили:

.d-add-vopros {
    max-width: 100%;
    height: 30px;
    padding: 20px;
}

.add-vopros {
	font-size: 16px;
    text-align: center;
	background-color: #62abce;
    padding: 5px 20px;
    border-radius: 10px;
    width: 160px;
    float: right;	
}
.add-vopros a {
	display: block;	
	text-decoration: none;
}

.add-vopros a:visited {
    text-decoration: none;
    color: #fbfbfb;
}

Получаем ссылку «Задать свой вопрос» в виде кнопки, которая перенаправляет на страницу формы.

8-add-vopros-min

Таким же способом можно вывести кнопку на странице самого поста (если она там нужна), или в меню добавить ссылку.

На этом все. В данной статье я показал более-менее простой вариант, но можно допиливать кнопки и форму. Можно сделать отдельную страницу и красиво оформить рубрики и т.д.

А вообще, очень красивую и удобную систему вопросов-ответов, без лишних заморочек, можно реализовать с помощью плагина DW Question & Answer (смотрите скриншоты здесь https://wordpress.org/plugins/dw-question-answer/screenshots/). Но там необходима обязательная регистрация пользователя на сайте, чтобы иметь возможность отвечать.

Читайте также:

Поблагодарите автора репостом:
Предыдущие статьи:

14 комментариев к записи “Реализация раздела «Вопрос-ответ» на сайте”

  • seoonly.ru
    http://seoonly.ru/

    поставлю на 1 сайт. Спасибо. Но полноценный форум не заменит.

    • rednail

      не поставишь, блог то свой не ведешь уже пару лет, лентяй

  • rednail

    «Не только админ, но и любой желающий может ответить на вопрос;»

    смерть проекта. Достаточно посмотреть какие идиоты отвечают на вопросах мэйл ру. такую пургу несут, безграмотные глупые и недалекие, причем не школота а взрослые люди.
    Мне даже попадались ответы типа «погугли».

    С чего вы взяли что «любой желающий» означает что он еще и «знающий»?

    • ARKSEO

      Ну в данном случае более важно обсуждение вопросов, а не точные ответы на них.
      Конечно, не мешало бы сделать выбор лучшего ответа, но тут уже стандартным функционалом не обойтись.

  • Любовь Николаевна
    http://ellemarket.com/shortiki-booty-maker.html

    Спасибо большое. Раньше за такой же плагин приходилось платить.

  • Александр
    http://med-ot-medvedeva.ru

    Спасибо за ценную статью, отметил ретвитом, установлю на 2 сайта, попробую!

  • Анатолий
    http://15wmz.com

    Регистрация требуется, чтобы задавать вопросы?

    • ARKSEO

      нет, в этом и фишка.

  • Анатолий
    http://15wmz.com

    Форма подписки на комментарии стоит низко — сначала задал комментарий, а потом увидел возможность подписаться.
    P.S. над кнопкой добавления ей место или включить подписку по умолчанию…

    • ARKSEO

      Включил подписку по-умолчанию, если кто-то ответит на комментарий.
      Спасибо за подсказку smile

      • Анатолий
        http://15wmz.com

        Подписка не работает sad
        Не приходят уведомления после Ваших ответов на мои комментарии.
        Был подписан до Ваших ответов…

        P.S. Где можно посмотреть работу в действии? У Вас не нашел на сайте.

        • ARKSEO

          Проверил, да, что-то плагин подписок не отправляет уведомления. Надо будет поискать причину.

          По поводу «посмотреть работу в действии» раздела вопросов-ответов. Реализованный в статье вариант полностью сейчас посмотреть негде. Есть только форма добавления вопросов на странице http://seodnevnik.ru/forum/vopros

  • Анатолий
    http://15wmz.com

    Комментарии сломались? Не добавляются при ответе на комментарий и не приходят уведомления…

    • ARKSEO

      Ваши комменты почему-то в спам улетают, достаю оттуда.

Прокомментировать

Наверх ▲