问题描述
对于演示环境,我想要 pre-fill wp-login 形式的用户名和密码字段分别为”demo” 和”demo” 字符串。
因此,用户只需点击”Log-in” 按钮即可连接到管理区域。
有办法做到这一点也许挂钩?
感谢您的建议
最佳解决方案
结果
Username
您可以声明表单字段值全局并预填充它。
This will override any setting done via the “Remember me”-Checkbox.
/**
* Changes the default user name to "DEMO"
*
* @return string $user_login
*/
function login_form_username()
{
global $user_login;
return $user_login = 'DEMO';
}
add_action( 'login_head', 'login_form_username' );
Password
我发现没有什么可以用来预先填写,所以我会添加一个注释。很高兴/可悲的是,有可用的管理界面的整套样式表。所以与 h2
相关的.wrap
给出了很好的造型。该功能挂接到管理钩子的附加字段钩。优先级是 0
将其设置为额外的字段。
/**
* Adds a note beyond the user login name & password field
*
* @return string
*/
function login_form_note()
{
print '<div class="wrap"><h2 style="text-align: center;">The Password is "DEMO"</h2></div>';
}
add_action( 'login_form', 'login_form_note', 0 );
安全:隐藏错误
由于有人会获得默认情况下输入现有用户名的视觉证据,所以我将把以下内容添加到你的 functions.php 文件中,以避免告诉用户名是否正确:
/**
* Hide wrong login names
*
* @return string
*/
function no_login_error()
{
return __( 'Wrong Credentials.' );
}
add_filter( 'login_errors', 'no_login_error' );
其他过滤器
笔记:
-
如果要替换其他类似样式的东西,则可以使用
login_enqueue_scripts
钩。 -
您还可以使用过滤网址的
login_headerurl
过滤器替换徽标后面的链接。链接title
可以使用login_headertitle
替换。两者都触发多站点以及单个站点设置。 -
可以使用
login_message
过滤器更改登录消息。
次佳解决方案
您可以使用此代码自动登录用户:
add_action('init', 'auto_login');
add_action('admin_init', 'auto_login');
function auto_login() {
if (!is_user_logged_in()) {
//by user name
$user = get_user_by( 'login', 'demo' );
//Or by user id, 2 being the ID of the demo user
//$user = get_userdata(2);
wp_set_current_user($user->ID, $user->user_login);
wp_set_auth_cookie($user->ID);
do_action('wp_login', $user->user_login);
}
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。