将复选框添加到Wordpress登录表单 - 条款和条件

时间:2012-06-13 18:56:22

标签: php wordpress logging

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

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

还安装了一个插件,可能会使称为“我的登录”的事情变得复杂。

我面前有所有代码,请告诉我我在寻找什么。

3 个答案:

答案 0 :(得分: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>';
}

答案 1 :(得分:0)

WordPress Filters/Actions是你的朋友。

看看:

答案 2 :(得分:0)

帕特里克·摩尔(Patrick Moore)给出的答案对我不起作用,但我确实对其进行了修改以提供有效的解决方案。这可能是因为他在2013年回答了该问题,现在代码已更改。我将过滤器更改为login_form_middle,并在最后将函数修改为变量,然后将值通过返回传递回去:

<?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;
}