Помогите, пожалуйста! Магазин на Woocommerce. В карточке товара можно оставить отзыв о товаре и там обязательные поля (для гостей (процедура регистрации - входа в личный кабинет по ненадобности убрана)) Отзыв, Email, Имя - все обязательные. Нужно сделать поле Email необязательным. Пробовал вырезать это поле в файле шаблона темы "Комментарии" - после комментирования или удаления кода - нет никаких изменений на сайте (все кэши почищены). Управление из админки: в Woocommerce можно только включить-отключить отзывы. Снятие галочки в настройках движка о том что "Автор комментария должен указать имя и email" ничего не меняет. Все равно поле обязательное. Вступают изменения только манипуляции со стилями. Меня полностью устраивает эта форма комментирования (отзывов на товары) и не хочу использовать плагины, только изменить обязательность этого поля... Кстати в коде прописано поле Сайт (url), но изначально вообще не отображается на сайте. Я думаю тут виновник именно Woocommerce.
Kavabanga, попробуйте в файле woocommerce/templates/single-product-reviews.php поменять строку PHP: '<input id="email" name="email" type="email" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30" aria-required="true" required /></p> на PHP: '<input id="email" name="email" type="email" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30" aria-required="false" /></p> И потом еще в файле /wp-content/plugins/woocommerce/includes/class-wc-comments.php возможно нужно поправить код.
Получилось, правда может не совсем корректно. Когда изменил первый файл, перестало выскакивать сообщение об обязательности заполнения данного поля, но видимо валидация не пропускала публикацию отзыва. Во втором файле не знаю как правильно и красиво исправить, как я понял валидацию, (не знаю php), но помогло комментирования данного блока: PHP: public static function comment_moderation_recipients( $emails, $comment_id ) { $comment = get_comment( $comment_id ); if ( $comment && 'product' === get_post_type( $comment->comment_post_ID ) ) { $emails = array( get_option( 'admin_email' ) ); } return $emails; после комментирования, публикуется отзыв, все работает. если знаете как сделать аккуратней или лучше (правка второго файла), подскажите, пожалуйста. Спасибо за помощь! --- Добавлено, 26 июл 2018 --- Есть все-таки баг такого тупого комментирования. На сайте я же для теста делал пару отзывов, чтобы глянуть весь процесс. Естественно вводил свой почтовый ящик. Теперь без обязательного поля Email + я его скрыл, уведомления об оставленном отзыве приходят на тот почтовый ящик, который я указывал, когда писал тестовые отзывы. В админке сайта прописан совсем другой почтовый ящик. Сделал поиск в базе данных - ничего не нашло. Не знаю где он хранится...
Может кому-нибудь понадобится решение. Выше код не тот - это отправка письма об отзыве на почту админа. Нужный код находится ниже в файле и выглядит так: PHP: public static function add_comment_purchase_verification( $comment_id ) { $comment = get_comment( $comment_id ); $verified = false; if ( 'product' === get_post_type( $comment->comment_post_ID ) ) { $verified = wc_customer_bought_product( $comment->comment_author_email, $comment->user_id, $comment->comment_post_ID ); add_comment_meta( $comment_id, 'verified', (int) $verified, true ); } return $verified; } В этом коде я удалил вот эту часть: PHP: $comment->comment_author_email, "Баг" с отправкой письма не на админскую почту, которая указана в настройках Wordpress решен изменением этой почты в настройках пользователя. Т.е. уведомления отправляются на почту, которая прописана в настройках пользователя, а не в настройках Wordpress.