Вопрос или проблема
По умолчанию публикация отзыва в WooCommerce Product добавит запись ‘комментарий’ в базу данных с автором в качестве имени автора. Я хотел бы использовать хук имени автора отзыва, потому что некоторые клиенты не хотят входить в систему и оставлять отзыв, поэтому Администратор сделает это за них. Ничего страшного, если ID пользователя комментария принадлежит Администратору, но то, что я хочу, это возможность изменить имя автора.
Я знаю, что отзыв можно редактировать с помощью некоторых плагинов, но было бы здорово, если бы мы могли добавить имя автора в форму отзыва (если Администратор) и настроить его при отправке отзыва.
Есть идеи, как это сделать? Заранее благодарю.
Нашел решение!
Перейдите в wp-includes > comment-templates.php.
Отредактируйте примерно в строке 2560:
else ( ! is_user_logged_in() ) {
на
else {
Затем в моем плагине .php файле или в файле ‘function.php’ вашей темы добавьте:
function modify_author($commentdata) {
$commentdata['comment_author'] = $_POST['author']; // Вам нужно это очистить.
return $commentdata;
}
add_filter('preprocess_comment', 'modify_author');
Я знаю, что это плохая идея модифицировать comment-templates.php, но в данный момент это работает для меня. Буду признателен за любые идеи о том, как показать форму отзыва для гостей через наш собственный плагин. Спасибо.
Ссылки:
Ответ или решение
Хук для изменения имени автора отзыва в WooCommerce
По умолчанию при публикации отзыва на продуктах WooCommerce в базе данных создается запись комментария, в которой имя автора устанавливается по умолчанию на имя пользователя, оставившего отзыв. Это может вызывать трудности, если администраторы или члены команды хотят оставить отзыв от имени клиентов, которые не могут или не хотят входить в систему. В этой статье мы рассмотрим, как использовать хук обратить к изменению имени автора отзыва, а также возможности создания формы отзыва для гостей без изменения файлов ядра WordPress.
Проблема
Существующая реализация WooCommerce создает запись комментария с автором, основанным на учетной записи пользователя. Однако многие администраторы сталкиваются с ситуацией, когда им нужно оставить отзывы от имени клиентов, что требует модификации имени автора отзыва. Хотя использовать сторонние плагины для редактирования комментариев возможно, лучше иметь возможность делать это непосредственно в процессе отправки отзыва.
Решение
Чтобы изменить имя автора отзыва для незалогиненных пользователей, можно воспользоваться хуком preprocess_comment
. Этот хук позволяет модифицировать данные комментария перед их добавлением в базу данных.
1. Настройка функции для изменения имени автора
В вашем плагине или в файле functions.php
вашей темы добавьте следующий код:
function modify_author($commentdata) {
// Проверка наличия поля 'author' в POST запросе
if (isset($_POST['author'])) {
$commentdata['comment_author'] = sanitize_text_field($_POST['author']); // Sanitize the input
}
return $commentdata;
}
add_filter('preprocess_comment', 'modify_author');
В этом коде мы проверяем, существует ли поле author
в входящем запросе. Если оно присутствует, мы устанавливаем имя автора в commentdata
, что впоследствии будет применено при добавлении комментария в базу данных. Обязательно используйте функцию sanitize_text_field()
, чтобы обезопасить данные от возможных уязвимостей.
2. Изменение отзывной формы
Так как вы упомянули, что не хотите изменять файл comment-templates.php
, рекомендуется использовать шорткод или функцию для добавления кастомной формы отзыва для гостей.
Вот пример, как вы можете создать простую форму:
function guest_review_form() {
ob_start(); ?>
<form action="" method="post">
<label for="author">Ваше имя:</label>
<input type="text" name="author" id="author" required>
<label for="comment">Ваш отзыв:</label>
<textarea name="comment" id="comment" required></textarea>
<input type="submit" value="Отправить отзыв">
</form>
<?php
return ob_get_clean();
}
add_shortcode('guest_review_form', 'guest_review_form');
Этот шорткод создаёт простой интерфейс, где гости могут вводить свое имя и отзыв. Не забудьте обработать отправленные данные в хук preprocess_comment
, чтобы гарантировать, что отзывы добавляются корректно.
Заключение
Использование хука preprocess_comment
позволяет гибко изменять имя автора отзыва без изменения ядра WordPress. Этот подход не только уменьшает риск конфликтов с обновлениями, но и предоставляет простое решение для администраторов, желающих оставлять отзывы от имени своих клиентов. Не забывайте всегда следить за безопасностью и очищать входные данные для предотвращения уязвимостей.
Вы можете использовать предложенный шорткод для интеграции формы отзыва в вашем сайте без необходимости редактировать исходные файлы, обеспечивая чистоту и поддерживаемость вашего кода.