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

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

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

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

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

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

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

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

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

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

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

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

Про его настройки я напишу чуть ниже, т.к. там действительно их много и есть свои нюансы. Сами туда пока не лезьте, то убьет высокое напряжение! shock

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

Покажу на примере своего блога, чтобы вам далеко не ходить 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

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

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

3-setting-999-min

3-setting-3-min

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

3-setting-4-min

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

3-setting-5-min

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

Давайте перейдем после этого на страницу добавления вопросов https://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="https://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
  1. seoonly.ru

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

    1. rednail

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

  2. rednail

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

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

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

    1. ARKSEO (автор)

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

  3. Любовь Николаевна

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

  4. Александр

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

  5. Анатолий

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

    1. ARKSEO (автор)

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

  6. Анатолий

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

    1. ARKSEO (автор)

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

      1. Анатолий

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

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

        1. ARKSEO (автор)

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

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

  7. Анатолий

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

    1. ARKSEO (автор)

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

Добавить комментарий