1

找不到为 wordpress 登录表单上的复选框添加验证的位置。我设置了一个名为“条款”的附加复选框,我需要用户在每次要登录时检查它。

问题是,如果他们不检查,我将无法停止 wordpress 登录。登录代码在哪里。

还安装了一个可能会使事情复杂化的插件,称为他们-我的登录。

我面前有所有的代码,只要告诉我我在找什么。

4

3 回答 3

1

我知道这已经相当老了,但我只是偶然发现了它,并且能够查看法典并找到解决方案。希望这可以帮助某人。感谢@Jason 指出正确的方向。

需要将此代码添加到您的主题functions.php文件中:

<?php

// As part of WP authentication process, call our function
add_filter('wp_authenticate_user', 'wp_authenticate_user_acc', 99999, 2);

function wp_authenticate_user_acc($user, $password) {
    // See if the checkbox #login_accept was checked
    if ( isset( $_REQUEST['login_accept'] ) && $_REQUEST['login_accept'] == 'on' ) {
        // Checkbox on, allow login
        return $user;
    } else {
        // Did NOT check the box, do not allow login
        $error = new WP_Error();
        $error->add('did_not_accept', 'You must accept the terms and conditions' );
        return $error;
    }
}

// As part of WP login form construction, call our function
add_filter ( 'login_form', 'login_form_acc' );

function login_form_acc(){
    // Add an element to the login form, which must be checked
    echo '<label><input type="checkbox" name="login_accept" id="login_accept" /> I agree</label>';
}
于 2013-02-25T20:55:20.807 回答
0

WordPress 过滤器/操作是您的朋友。

看一眼:

于 2012-06-13T19:01:06.530 回答
0

Patrick Moore 给出的答案对我不起作用,但我确实对其进行了修改以提供有效的解决方案。这可能是因为他早在 2013 年就回答了,现在代码已经改变了。我将过滤器更改为 login_form_middle,并将最后的函数修改为变量,然后通过 return 将值传递回:

<?php

// As part of WP authentication process, call our function
add_filter('wp_authenticate_user', 'wp_authenticate_user_acc', 99999, 2);

function wp_authenticate_user_acc($user, $password) {
    // See if the checkbox #login_accept was checked
    if ( isset( $_REQUEST['login_accept'] ) && $_REQUEST['login_accept'] == 'on' ) {
        // Checkbox on, allow login
        return $user;
    } else {
        // Did NOT check the box, do not allow login
        $error = new WP_Error();
        $error->add('did_not_accept', 'You must accept the terms and conditions' );
        return $error;
    }
}

// As part of WP login form construction, call our function
add_filter ( 'login_form_middle', 'login_form_acc' );

function login_form_acc(){
    // Add an element to the login form, which must be checked
    $termsLink = '<label><input type="checkbox" name="login_accept" id="login_accept" /> I agree</label>';
    return $termsLink;
}
于 2019-10-03T15:15:33.103 回答