Php 在发布评论之前,我如何将Wordpress评论复选框设置为必填/必填?

Php 在发布评论之前,我如何将Wordpress评论复选框设置为必填/必填?,php,wordpress,function,checkbox,required,Php,Wordpress,Function,Checkbox,Required,我禁用了Wordpress功能“显示评论cookies opt-in复选框,允许设置评论作者cookies”。但我手动在评论表单中添加了一个复选框,因为我想更改复选框的标签 为此,我向子主题的functions.php中添加了以下代码: add_filter( 'comment_form_default_fields', 'tu_comment_form_change_cookies_consent' ); function tu_comment_form_change_cookies_cons

我禁用了Wordpress功能“显示评论cookies opt-in复选框,允许设置评论作者cookies”。但我手动在评论表单中添加了一个复选框,因为我想更改复选框的标签

为此,我向子主题的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;

}
add_filter('comment_form_default_fields'、'tu_comment_form_change_cookies_approve');
功能图注释表更改cookies同意书($fields){
$commenter=wp_get_current_commenter();
$approve=empty($commenter['comment\u author\u email'])?“”:“checked=”checked“;
$fields['cookies']='

'。 “使用此评论表表示您同意我们的隐私政策

”; 返回$fields; }
这是工作正常,但现在我想有这个复选框的强制性,以便用户必须检查它之前按下'后评论'按钮

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

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


谢谢你的帮助

在设置注释数据之前有一个过滤器挂钩。它是
preprocess\u 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' );
函数wpso\u验证\u策略\u检查($commentdata){
if('post'==get_post_type($_post['comment_post_ID'])){
如果(!isset($_POST['wp-comment-cookies-approve'])){
wp_die(“”。uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
}
}
返回$commentdata;
}
添加过滤器(“预处理注释”、“wpso验证策略检查”);

编辑:添加了post类型条件,以便此检查仅应用于
post
post类型。

在设置注释数据之前有一个过滤器挂钩。它是
preprocess\u 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' );
函数wpso\u验证\u策略\u检查($commentdata){
if('post'==get_post_type($_post['comment_post_ID'])){
如果(!isset($_POST['wp-comment-cookies-approve'])){
wp_die(“”。uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
}
}
返回$commentdata;
}
添加过滤器(“预处理注释”、“wpso验证策略检查”);

编辑:添加了post类型条件,以便此检查仅应用于
post
post类型。

将添加到输入字段应足以防止表单提交。根据您的说法,这“不起作用”,因此我们需要查看一些示例代码(或实时URL)以了解情况并提供建议。将添加到输入字段应足以防止表单提交。因为据你所说,这是“不工作”,我们需要看到一些示例代码(或一个实时URL)来了解发生了什么,并提供建议。非常感谢!你的答案是做工作,但是。。。现在我有另一个问题:同样的检查是否设置了复选框现在也适用于Woocommerce审查,问题是实际的复选框没有显示在那里。这意味着,如果我想提交Woocommerce产品的审查,会出现错误消息(“您必须接受隐私政策”),但没有复选框来实际接受它。同样,对于帖子评论来说,它工作得很好。有人能帮忙吗?谢谢!再次感谢,这就是我的工作:)有没有一种简单的方法可以让我在浏览器弹出窗口的同一页面上显示错误消息,而不是在单独的页面上显示?我只是想避免额外点击后退按钮。为此,我想如果没有选中复选框,您可以使用JavaScript来验证和阻止表单提交。不确定,但这可能有效。非常感谢你!你的答案是做工作,但是。。。现在我有另一个问题:同样的检查是否设置了复选框现在也适用于Woocommerce审查,问题是实际的复选框没有显示在那里。这意味着,如果我想提交Woocommerce产品的审查,会出现错误消息(“您必须接受隐私政策”),但没有复选框来实际接受它。同样,对于帖子评论来说,它工作得很好。有人能帮忙吗?谢谢!再次感谢,这就是我的工作:)有没有一种简单的方法可以让我在浏览器弹出窗口的同一页面上显示错误消息,而不是在单独的页面上显示?我只是想避免额外点击后退按钮。为此,我想如果没有选中复选框,您可以使用JavaScript来验证和阻止表单提交。不确定,但这可能有效。