根据这些评论,我将回答一个意译问题——“如何制作一个在大多数情况下只显示密码字段的登录表单”。
答案是将用户名存储在一个非常长期的cookie中(一年?)每次用户登录时。
function wpse82578_set_user_cookie($logged_in_cookie, $expire, $expiration, $user_id, $state) {
if ($state == \'logged_in\') { // user has logged in - store his name in a \'username\' cookie
$user = get_user_by( \'id\', $user_id );
setcookie(\'username\', $user->user_login, time() + 365*24*60*60, COOKIEPATH, COOKIE_DOMAIN);
}
}
add_action(\'set_logged_in_cookie\', 10,5);
现在,在PHP代码中,您可以检查cookie是否已设置,并在表单中显示或隐藏用户名字段。
function wpse82578_echo_login_form() {
...
if (isset($_COOKIE[\'username\'])) { // already know the user name, no point in asking for it again so just put it as hidden field
<input type="hidden" name="log" value="<?php esc_attr($_COOKIE[\'username\'])?> />
else { // show the field+label, ripped from wp_login_form
<p class="login-username">
<label for="\' . esc_attr( $args[\'id_username\'] ) . \'">\' . esc_html( $args[\'label_username\'] ) . \'</label>
<input type="text" name="log" id="\' . esc_attr( $args[\'id_username\'] ) . \'" class="input" value="\' . esc_attr( $args[\'value_username\'] ) . \'" size="20" tabindex="10" />
</p>
}
}
此代码不作任何保证,但我认为它是最接近您想要的代码,同时又不会牺牲安全性和干扰WordPress用户系统。