Как сделать, чтобы при нажатии кнопки «Ответить на комментарий» сразу открывалась бы форма для комментария?

Ссылка скопирована
1 ответ

Имеется статья с веткой комментариев: https://gorodaplanety.ru/rossiya/vladivostok/pamya...
Хотелось бы, чтобы при нажатии на кнопку "Ответить" под комментарием сразу открывалось бы окно для заполнения комментария.
Примерно вот так:

Как сделать, чтобы при нажатии кнопки «Ответить на комментарий» сразу открывалась бы форма для комментария?

Код ответа на комментарий в functions.php вот такой:

<?php comment_reply_link(array_merge($args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>

<?php comment_reply_link(array_merge($args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>

Шаблон комментариев пользовательский.

Дополнительно

Не сильно понятно, какой у вас php framework или для какой CMS это делается, но если вы хотите чтобы реакция на клик была практически моментальной (без ожидания обмена данных с сервером) - нужен другой подход: сервер предоставляет API для публикации комментариев, а javascript на фронтенде обрабатывает клик по кнопке, открывает форму коммента и отправляет его на сервер.

Силами PHP или любого другого backend решения, без JS этого не достичь.

  • Ярослав, это WordPress
  • Александр Торопов, Это такой "специалист" ответил. Если он не знает, как определить CMS сайта, то что стоят все остальные его объяснения?
    Зачем тогда в Вордпресс встроенная функция "Разрешить древовидные вложенные комментарии глубиной n уровней"?
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    WordPress-редакция Ответ

    В WordPress форма ответа на комментарий уже умеет перемещаться под нужный комментарий. Для этого должна быть подключена стандартная библиотека comment-reply, а ссылка «Ответить» должна выводиться через comment_reply_link().

    Подключите скрипт в теме:

    add_action('wp_enqueue_scripts', function () {
        if (is_singular() && comments_open() && get_option('thread_comments')) {
            wp_enqueue_script('comment-reply');
        }
    });

    add_action('wp_enqueue_scripts', function () { if (is_singular() && comments_open() && get_option('thread_comments')) { wp_enqueue_script('comment-reply'); } });

    В шаблоне комментария ссылка должна быть примерно такой:

    comment_reply_link([
        'reply_text' => 'Ответить',
        'depth'      => $depth,
        'max_depth'  => get_option('thread_comments_depth'),
    ]);

    comment_reply_link([ 'reply_text' => 'Ответить', 'depth' => $depth, 'max_depth' => get_option('thread_comments_depth'), ]);

    Если у вас кастомная кнопка «Ответить», она может не работать, потому что в ней нет нужных data-атрибутов и обработчика WordPress. Лучше не писать эту логику с нуля, а использовать стандартный механизм.

    Также проверьте в админке: «Настройки → Обсуждение → Разрешить древовидные комментарии». Если древовидные комментарии отключены, форма не будет вести себя как reply к конкретному комментарию.

    Если нужно именно модальное окно, тогда это уже отдельная JS-логика: по клику открывать modal, подставлять comment_parent, а после отправки закрывать форму. Но для обычных ответов стандартный comment-reply надёжнее.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно