您好我正在尝试使用header.php下拉列表中的Wordpress自定义登录信息,以便在输入错误的电子邮件或密码时显示错误,或者即使两者或1都留空也是如此。
这是我正在使用的登录表单
<?php
if ( ! is_user_logged_in() ) { // Display WordPress login form:
$args = array(
'redirect' => admin_url(),
'form_id' => 'loginform-custom',
'label_username' => __( 'Username custom text' ),
'label_password' => __( 'Password custom text' ),
'label_remember' => __( 'Remember Me custom text' ),
'label_log_in' => __( 'Log In custom text' ),
'remember' => true
);
wp_login_form( $args );
} else { // If logged in:
wp_loginout( home_url() ); // Display "Log Out" link.
echo " | ";
wp_register('', ''); // Display "Site Admin" link.
}
?>
function wp_authenticate($username, $password) {
$username = sanitize_user($username);
$password = trim($password);
$user = apply_filters('authenticate', null, $username, $password);
if ( $user == null ) {
$user = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.'));
}
$ignore_codes = array('empty_username', 'empty_password');
if (is_wp_error($user) && !in_array($user->get_error_code(), $ignore_codes) ) {
// Put your code here
}
return $user;
}
我已将上面的内容复制到我的主题文件夹中的functions.php中,但它不起作用 - 我是否必须在我的表单中调用它,如果是这样的话?我应该把代码放在哪里:
//把你的代码放在这里?
答案 0 :(得分:0)
函数 wp_authenticate($ username,$ password)是WP函数,因此无需在functions.php中添加它。它可以在wp-includes目录中的 pluggable.php 中找到。
是的,您必须在表单或验证脚本中调用它,就像调用任何其他函数一样。例如:
$CheckValidUser = wp_authenticate($username, $password);
我猜你应该在调用 is_user_logged_in()之前调用它,否则不会有任何$ username或$ password,因为WP已经拒绝了用户。
希望这有帮助。
答案 1 :(得分:0)
如果用户点击登录按钮而未填写用户名,则将以下代码放入functions.php
;密码将移至wp-login.php
页。
我们可以在functions.php
文件中解决此问题,编写以下代码。
add_action('init', 'prevent_wp_login');
function prevent_wp_login() {
if(isset($_POST['log']) && isset($_POST['pwd']))
if($_POST['log']=='' && $_POST['pwd']=='')
{
$page = write your redirect url;
// Redirect to the your url
wp_redirect($page);
exit();
}
}
答案 2 :(得分:0)
wp_signon()函数使用自定义登录,对我来说工作正常:
require('wp-load.php');
$err = '';
$success = '';
global $wpdb,$current_user;
$response = array();
$data = json_decode(file_get_contents("php://input"));
$email = $data->email_id;
$password = $data->password;
$username = $wpdb->escape($email);
$password = $wpdb->escape($password);
$remember = true;
if($remember) $remember = "true";
else $remember = "false";
$login_data = array();
$login_data['user_login'] = $username;
$login_data['user_password'] = $password;
$login_data['remember'] = $remember;
$user_verify = wp_signon( $login_data, false );
set_current_user($user_verify->ID);
if (is_user_logged_in())
{
get_currentuserinfo();
$response['user_id']=$user_verify->ID;
$response['first_name']=$current_user->user_firstname ;
$response['last_name']=$current_user->user_lastname;
$response['email']=$current_user->user_email;
$status="success";
$msg="";
} else {
$status="failed";
$msg="Invalid Credential.";
}