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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

Шаг 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

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

Примерно такая страница добавления вопросов должна получиться:

4-rusult-1-min

4-rusult-2-min

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

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

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

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

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/). Но там необходима обязательная регистрация пользователя на сайте, чтобы иметь возможность отвечать.

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

Оцените статью
Дневник Сеошника
Добавить комментарий

  1. seoonly.ru

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

    Ответить
    1. rednail

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

      Ответить
  2. rednail

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

    Мне даже попадались ответы типа «погугли».
    С чего вы взяли что «любой желающий» означает что он еще и «знающий»?

    Ответить
    1. ARKSEO

      Ну в данном случае более важно обсуждение вопросов, а не точные ответы на них.

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

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

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

    Ответить
  4. Александр

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

    Ответить
  5. Анатолий

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

    Ответить
    1. ARKSEO

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

      Ответить
  6. Анатолий

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

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

    Ответить
    1. ARKSEO

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

      Спасибо за подсказку

      Ответить
      1. Анатолий

        Подписка не работает

        Не приходят уведомления после Ваших ответов на мои комментарии.

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

        Ответить
        1. ARKSEO

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

          Ответить
  7. Анатолий

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

    Ответить
    1. ARKSEO

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

      Ответить
  8. Серж

    Ребят, а есть ли возможность изменить поля формы? добавить, изменить?

    Т.е. что нужно — к примеру переименовать Ваш E-mail и назвать его к примеру просто адрес, добавить поле номер дома и т.д.

    Ответить
  9. Сергей

    Подскажите, как убрать кнопку Текст в редакторе?

    У меня стоит редактор TinyMCE, и в итоге выводится редактор Визуально и Текст (тест это html редактирование) Как не показывать этот вариант редактора?

    Ответить
    1. ARKSEO

      Открыть файл в папке плагина:

      /wp-content/plugins/user-submitted-posts/views/submission-form.php

      Найти:

      ‘quicktags’ => true,

      Заменить на:

      ‘quicktags’ => false,
      Но после обновления плагина эта настройка снова сбросится.

      Ответить
      1. Сергей

        Еще такой вопрос, вы пробовали вставлять Другие вопросы произвольно к примеру перед Похожие статьи? У меня в таком случае у Похожих слетает ид.
        Еще вопрос, если в комментарий добавляешь фото, оно почему то появляется и в комментарии и прилепляется к вопросу, что странно.
        Еще вопрос, автор опубликовал вопрос, ушел спать, вопрос на модерации, модератор одобряет, почему автора не уведомляют что его вопрос одобрен? Как это реализовать? А то получается что он может и забыть где вопрос писал. У меня пока он комментарий не оставит уведомления не летят. Но он же и не писал коммент. Очень надо разобраться.
        И еще как вывести произвольное поле в шаблон? К примеру поле города автора.

        Ответить
        1. ARKSEO

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

          Ответить
  10. Владимир

    Подскажите, возможно ли отсортировать рубрики в выпадающем списке? У меня просто 60+ рубрик, хотелось чтобы они шли по порядку, а не как попало.

    Ответить
  11. Скупка картриджей

    У меня блог на Вордпресс, очень удобный, можно выбирать любую тему какая нравиться (внешний вид) — суть блога заключается в обычном постинге записей. Т.е. делаешь запись и публикуешь ее — единственное нужно на сайте поставить что бы отображались записи на главной странице а не статичная страница.

    Ответить