Как включить звездные рейтинги только для продуктов WooCommerce, не требуя отзывов комментариев

Я ищу код, который позволит мне собирать звездные отзывы о продуктах WooCommerce, не требуя от пользователей каких-либо комментариев.

Этот код ниже дает мне почти то же самое, исключая поле для комментариев, но WordPress не позволяет сохранять отправку. Чего-то не хватает в этом коде?

function filter_woocommerce_product_review_comment_form_args( $comment_form ) {
    if ( function_exists( 'WC' ) && is_product() ) {
        $comment_form['comment_field'] = '<div class = "comment-form-rating"><label for = "rating">' . esc_html__( 'Your rating', 'your-theme-text-domain' ) . '</label><select name = "rating" id = "rating" required>
            <option value = "">' . esc_html__( 'Rate&hellip;', 'your-theme-text-domain' ) . '</option>
            <option value = "5">' . esc_html__( 'Perfect', 'your-theme-text-domain' ) . '</option>
            <option value = "4">' . esc_html__( 'Good', 'your-theme-text-domain' ) . '</option>
            <option value = "3">' . esc_html__( 'Average', 'your-theme-text-domain' ) . '</option>
            <option value = "2">' . esc_html__( 'Not that bad', 'your-theme-text-domain' ) . '</option>
            <option value = "1">' . esc_html__( 'Very poor', 'your-theme-text-domain' ) . '</option>
        </select></div>';

        $comment_form['fields']['author'] = '';
        $comment_form['fields']['email'] = '';
        $comment_form['fields']['url'] = '';
        $comment_form['comment_notes_before'] = '';
        $comment_form['label_submit'] = esc_html__( 'Submit Review', 'your-theme-text-domain' );
        $comment_form['title_reply'] = esc_html__( 'Leave a Review', 'your-theme-text-domain' );
    }
    return $comment_form;
}
add_filter( 'woocommerce_product_review_comment_form_args', 'filter_woocommerce_product_review_comment_form_args' );

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

add_filter('duplicate_comment_id', 'allow_duplicate_comments_with_empty_data', 10, 2);

function allow_duplicate_comments_with_empty_data($dupe_id, $commentdata) {

    // Return false to allow duplicate as the content will be always empty in this case.
    return false;
}

Вы можете минимизировать приведенный выше код, используя приведенный ниже код.

add_filter('duplicate_comment_id', '__return_false');

Добавьте приведенный ниже код, чтобы разрешить пустые комментарии.

add_filter('allow_empty_comment', '__return_true');

Спасибо вам за ваши предложения. Это потрясающе. Можете ли вы объединить предложенный вами код с моим, чтобы я мог точно видеть, как вы предлагаете исправить проблему, и чтобы я не напортачил?

Parham 10.02.2023 19:51

Просто добавьте строку после кода add_filter('duplicate_comment_id', '__return_false');

mujuonly 10.02.2023 20:11

Спасибо. Я попытался просто добавить эту строку кода в конец своего кода и запустил фрагмент. Я проверил код, выбрав количество звезд, и когда я нажимаю «Отправить отзыв», я получаю то же сообщение об ошибке «Ошибка: введите текст вашего комментария». Почему-то Woocommerce не примет заявку. Любые другие способы обойти это?

Parham 10.02.2023 20:52

@Parham добавьте код add_filter('allow_empty_comment', '__return_true'); вместе с другим

mujuonly 10.02.2023 20:56

Вы удивительны, спасибо. Я думаю, что изначально неправильно вас понял, но поскольку я добавил обе эти отдельные строки кода в конец своего кода, теперь он принимает комментарии только с рейтингом звезд. Также кажется, что имя и дата вошедшего в систему пользователя отображаются над звездным рейтингом. Можно ли скрыть и эту информацию?

Parham 10.02.2023 22:14

Например, вместо того, чтобы добавлять приведенный ниже образец кода CSS, есть ли способ добавить код PHP? .woocommerce .star-rating + span.reviewer, .woocommerce .star-rating + span.woocommerce-review-date { display: none; }

Parham 10.02.2023 22:26

@Parham Какая тема активна?

mujuonly 11.02.2023 06:14

В настоящее время у меня есть тема ASTRA.

Parham 11.02.2023 20:32

Другие вопросы по теме