Как я могу сделать флажок комментария Wordpress обязательным / обязательным перед публикацией комментария? - PullRequest
1 голос
/ 04 мая 2019

Я отключил функцию Wordpress «Показывать флажок показа файлов cookie для комментариев, позволяя устанавливать файлы cookie автора комментариев». но я добавил флажок в форме комментария вручную, потому что я хотел изменить ярлык флажка.

Я сделал это, добавив следующий код в functions.php моей дочерней темы:

add_filter( 'comment_form_default_fields', 'tu_comment_form_change_cookies_consent' );
function tu_comment_form_change_cookies_consent( $fields ) {
    $commenter = wp_get_current_commenter();

    $consent   = empty( $commenter['comment_author_email'] ) ? '' : ' checked="checked"';

    $fields['cookies'] = '<p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"' . $consent . ' />' .
                     '<label for="wp-comment-cookies-consent">By using this comment form you agree with our Privacy Policy</label></p>';
    return $fields;

}

Это работает нормально, но теперь я хочу, чтобы этот флажок был обязательным, чтобы пользователь мог проверить его перед нажатием кнопки «Оставить комментарий».

Таким образом, если флажок снят, пользователь должен увидеть сообщение об ошибке при нажатии на кнопку «Оставить комментарий».

Как я могу это сделать? Все предложения, которые я нашел до сих пор, не работают, как, например, добавление «обязательного» после идентификатора ввода или имени.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 07 мая 2019

Прямо перед тем, как заданы данные комментария, есть фильтр. Это preprocess_comment. В этом хуке я проверил, установлен ли флажок или нет. Если нет, он заблокирует публикацию комментариев.

function wpso_verify_policy_check( $commentdata ) {
    if ( 'post' === get_post_type( $_POST['comment_post_ID'] ) ) {
        if ( ! isset( $_POST['wp-comment-cookies-consent'] ) ) {
            wp_die( '<strong>' . __( 'WARNING: ' ) . '</strong>' . __( 'You must accept the Privacy Policy.' ) . '<p><a href="javascript:history.back()">' . __( '&laquo; Back' ) . '</a></p>');
        }
    }
    return $commentdata;
}

add_filter( 'preprocess_comment', 'wpso_verify_policy_check' );

Редактировать: добавлен условный тип записи, чтобы эта проверка применялась только к post типу записи.

...