问题描述

对于演示环境,我想要 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。