找不到在wordpress登录表单上为复选框添加验证的位置。我有一个名为“条款”的附加复选框,我需要用户每次登录时都要检查。
问题是,如果他们不检查,我无法阻止wordpress登录。它在哪里登录代码。
还安装了一个插件,可能会使称为“我的登录”的事情变得复杂。
我面前有所有代码,请告诉我我在寻找什么。
答案 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)
答案 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;
}