我通过wp_login_form()函数的帮助创建了登录模板.
现在如果用户输入错误的密码或用户名,将使用以下代码重定向到参数login = Failed的同一页面:
现在如果用户输入错误的密码或用户名,将使用以下代码重定向到参数login = Failed的同一页面:
add_action( 'wp_login_Failed','front_end_login_fail' ); function front_end_login_fail( $username ) { $_SESSION['uname'] = $username; // Getting URL of the login page $referrer = $_SERVER['HTTP_REFERER']; $login_Failed_error_codes = array( 'empty_password','empty_email','invalid_email','invalidcombo','empty_username','invalid_username','incorrect_password' ); // if there's a valid referrer,and it's not the default log-in screen if( !empty( $referrer ) && !strstr( $referrer,'wp-login' ) && !strstr( $referrer,'wp-admin' ) ) { wp_redirect( get_permalink( 93 ) . "?login=Failed" ); exit; } }
现在这个功能可以正常工作,但是现在按照wordpress功能,它提供如下:
1.如果用户输入真实用户名,但错误的密码会显示为“incorrect_password”
2.如果用户输入虚假用户名,但真实密码将显示错误为“invalid_username”
3.如果用户输入错误的用户名,但错误的密码会显示为“invalidcombo”
添加如此请在代码中检查变量$login_Failed_error_codes …
我已经做了一些搜索.我有一些类叫“WP_error”.但是我不知道它是如何与这个代码一起使用的.
我只是坚持如何将WP_error的对象从wp-login.PHP传递给我的csutom模板?
谢谢…任何帮助将是可敬的.
我想我明白你要实现什么您希望能够在自己的自定义登录页面上显示登录失败的原因.我假设你已经知道如何获取$_GET参数,因为你使用它来传递你的login_Failed参数.
原文链接:https://www.f2er.com/php/139568.html改用login_redirect过滤器:
add_filter('login_redirect','my_login_redirect',10,3); function my_login_redirect($redirect_to,$requested_redirect_to,$user) { if (is_wp_error($user)) { //Login Failed,find out why... $error_types = array_keys($user->errors); //Error type seems to be empty if none of the fields are filled out $error_type = 'both_empty'; //Otherwise just get the first error (as far as I know there //will only ever be one) if (is_array($error_types) && !empty($error_types)) { $error_type = $error_types[0]; } wp_redirect( get_permalink( 93 ) . "?login=Failed&reason=" . $error_type ); exit; } else { //Login OK - redirect to another page? return home_url(); } }