Вопрос или проблема
Как я могу показать сообщение пользователю из плагина?
В частности, я хотел бы показать сообщение любому пользователю после отправки комментария, сообщая, что их комментарий был отправлен. Я думал о том, чтобы подключиться к действию comment_post
.
Однако, при поиске я не смог найти ответ на более общую проблему, как показывать сообщение пользователю. Сообщение должно быть показано пользователю один раз, независимо от того, вошел он в систему или нет, при следующем посещении страницы. Похоже на drupal_set_message
из Drupal (см. https://stackoverflow.com/questions/2476351/drupal-display-success-error-message)
Вы могли бы использовать JavaScript, если хотите. Так что где бы ни проверялся клик по кнопке, вы могли бы добавить что-то вроде этого:
<?php
$message = "Ваш комментарий был отправлен";
echo "<script type="text/javascript">alert('$message');</script>";
?>
Это если это должно произойти, когда они нажимают кнопку – возможно, я неправильно интерпретирую вопрос.
Ответ или решение
Когда возникает необходимость показать сообщение пользователю после выполнения определённого действия, например, отправки комментария через плагин, важно выбрать подходящий метод, который обеспечит соответствующий уровень взаимодействия. В данной ситуации вы упоминаете желание интегрировать сообщение после публикации комментария, используя систему наподобие drupal_set_message из Drupal.
Теория (Theory):
Чтобы успешно отправить сообщение после действия, выполненного пользователем, в WordPress можно воспользоваться хуками и сессиями. Один из таких хуков — comment_post
, который срабатывает после того, как комментарий был добавлен в базу данных. Это даёт возможность добавить флеш-сообщение, которое будет отображено пользователю при следующей загрузке страницы. В WordPress для отображения временного сообщения используется сессия или куки, которые помогают единоразово показать уведомление.
Пример (Example):
Вот как можно реализовать это с использованием PHP и JavaScript:
-
Подключение к хуку
comment_post
: создайте функцию, которая сохраняет сообщение в сессию после успешного добавления комментария.add_action('comment_post', 'set_comment_submitted_message'); function set_comment_submitted_message($comment_id) { if (session_status() == PHP_SESSION_NONE) { session_start(); } $_SESSION['comment_message'] = 'Ваш комментарий был успешно отправлен'; }
-
Отображение сообщения на следующей загрузке страницы: добавьте код для вывода сообщения и последующего его удаления, чтобы оно не отображалось повторно.
add_action('wp_head', 'show_comment_message'); function show_comment_message() { if (session_status() == PHP_SESSION_NONE) { session_start(); } if (!empty($_SESSION['comment_message'])) { echo "<script type='text/javascript'>alert('" . $_SESSION['comment_message'] . "');</script>"; unset($_SESSION['comment_message']); // Удаляем сообщение из сессии } }
Применение (Application):
Этот подход позволяет показывать сообщение пользователю один раз после того, как он оставил комментарий. Это удобно как для оповещения о успешности процесса (например, «Ваш комментарий был отправлен»), так и для показа сообщений об ошибках или другой важной информации. С использованием PHP и JavaScript мы можем обеспечить повсеместную совместимость и интерактивность, не зависимо от того, авторизован пользователь или нет.
Таким образом, реализация подобной функциональности не требует сложных решений и может быть легко выполнена с учётом особенностей вашего проекта.