如何在登录页面上预填用户名/密码字段


8

对于演示环境,我想分别用“ demo”和“ demo”字符串预填充wp-login表单的用户名和密码字段。

因此,用户只需单击“登录”按钮即可连接到管理区域。

有办法吗?也许带钩?

感谢您的建议

Answers:


6

结果

在此处输入图片说明

用户名

您可以全局声明表单字段值并对其进行预填充。

这将覆盖通过“记住我”-复选框完成的所有设置。

/**
 * 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' );

密码

我没有发现任何可以用来预填充的内容,因此我要添加注释。很高兴/遗憾的是,有整套用于管理UI的样式表。因此.wrap,与h2给出了很好的样式。该函数被挂钩到admin挂钩的其他字段挂钩。优先级是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过滤器更改登录消息。

6

您可以使用以下代码自动登录用户:

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);
    }
}

如果您不使用ID,而是按名称获取用户,则效果会更好。还是+1。
kaiser 2012年

2
您可以! get_user_by( 'login', 'demo' );
SickHippie

1
会不会在init钩够吗?它无处不在...
kaiser 2012年

3

这是3种方法:

第一种方法是使用wp_signon挂钩

$creds = array();    
$creds['user_login'] = 'example';   
$creds['user_password'] = 'plaintextpw';   
$creds['remember'] = true;   
$user = wp_signon( $creds, false );  
if ( is_wp_error($user) ) {  
   echo $user->get_error_message();
}

第二种方法是使用jQuery .val()并将其添加到您的登录页面

$("#user_login").val('username');    
$("#user_pass").val('password');

最后一种方法是编辑wp-login.php文件(注意,尽管可以使用,但不建议这样做)。


1)将需要替换整个wp-login.php文件-您将如何处理(严重的问题-我很感兴趣)?重写规则,以便您的模板会被触发?2)是有效的,但需要jQuery并将其包装到一个jQuery( document ).ready( function( $ )调用中以使$该函数可用。您也jQuery只需要为此打电话。3)好吧,好吧...让我们什么也没说:)
kaiser 2012年

1)我不确定,我主要是脑力激荡从未做到过。至于2)看来jquery已经加载到我的登录页面中。我也很懒,没有将我的示例包装在jQuery(document...标签中。3)从来没有发生过。
布鲁克。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.