Добавить пользовательский флажок в обзорах WooCommerce

Здравствуйте, я хочу добавить пользовательский флажок для политики в обзорах WooCommerce. Вот код, который я использую:

    add_action( 'comment_form_logged_in_after', 'my_checkbox' );    
add_action( 'comment_form_after_fields', 'my_checkbox' );

function my_checkbox() {
    echo '<div class="my_split_checkbox"><h2>' . __('Split Order', 'woocommerce') . '</h2>'

    woocommerce_form_field( 'my_split_checkbox', array(
        'type'     => 'checkbox',
        'class'    => array('checkbox_field'),
        'label'    => __('Split Order', 'woocommerce'),
        'required' => true,
    ));

    echo '</div>'
}

введите описание изображения здесь

Проблема в том, что флажок отображается, но пользователь может просто оставить отзыв без проверки. Есть ли у вас решение по этому поводу? и почему мой флажок не требуется.

Большое спасибо

Всего 1 ответ


На самом деле это не вопрос WC, а WordPress, поскольку WC использует функциональность WordPress.

Вы можете использовать это

// Add the filter to check whether the checkboc is checked
function verify_checkbox( $commentdata ) {
    if ( ! isset( $_POST['my_split_checkbox'] ) ) {
        wp_die( __( 'Error: You did not...' ) );
    }

    return $commentdata;
}
add_filter( 'preprocess_comment', 'verify_checkbox' );

Дополнительная информация: https://www.smashingmagazine.com/2012/05/adding-custom-fields-in-wordpress-comment-form/


РЕДАКТИРОВАТЬ: возможно ли отобразить ошибку в форме перед отправкой? не на другой странице?

Удалите приведенный выше код, добавьте его вместо

function comment_validation_init() {
    if(is_single() && comments_open() ) {
        ?>        
        <script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
        <script type="text/javascript">
        jQuery(document).ready(function($) {
            $('#commentform').validate({

                rules: {
                    author: {
                        required: true,
                        minlength: 2
                    },

                    email: {
                        required: true,
                        email: true
                    },

                    comment: {
                        required: true,
                        minlength: 20
                    },

                    my_split_checkbox: {
                        required: true                      
                    }
                },

                messages: {
                    author: "Please fill the required field",
                    email: "Please enter a valid email address.",
                    comment: "Please fill the required field, minlength = 20",
                    my_split_checkbox: "Error..."
                },

                errorElement: "div",
                errorPlacement: function(error, element) {
                    element.after(error);
                }

            });
        });
        </script>
        <?php
    }
}
add_action('wp_footer', 'comment_validation_init');

Для придания стиля: добавьте в свой файл CSS

.error  {
    padding: 10px 0 20px 0;
    color: #FF0000;
}
input.error, textarea.error {
    color:#000000;
}

Есть идеи?

10000