На самом деле это не вопрос W C, а wordpress, поскольку W C использует функциональность 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;
}