发布评论之前,如何使Wordpress评论复选框为必需/必需?

时间:2019-05-04 17:20:05

标签: php wordpress function checkbox required

我禁用了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;

}

这工作正常,但现在我想强制使用此复选框,以便用户必须在按下“发布评论”按钮之前对其进行检查。

因此,如果未选中此复选框,则用户在单击“发表评论”按钮时应该会看到错误消息。

我该怎么做?到目前为止,我发现的所有建议都行不通,例如在输入ID或名称后面添加“ required”。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在设置注释数据之前有一个过滤器挂钩。是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帖子类型。