如何在wp-login.php页面上禁用自动完成

时间:2014-08-28 作者:Jonathan Mayhak

似乎没有一种简单的方法可以在WordPress登录页面上向密码输入添加autocomplete=“off”,而无需编辑wp登录。直接访问php页面。

我有什么遗漏吗?我不想修改核心文件。

6 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

您唯一的解决方案(不修改核心文件)是使用JavaScript。

function wpse_159462_login_form() {
    echo <<<html
<script>
    document.getElementById( "user_pass" ).autocomplete = "off";
</script>
html;
}

add_action( \'login_form\', \'wpse_159462_login_form\' );
话虽如此,如果你不是唯一一个将要登录的人,我建议不要禁用自动完成,几乎可以肯定**** people off.

SO网友:vard

以下是我唯一想到的PHP解决方案:

function disable_autofill_password($safe_text, $text) {
    if($safe_text === \'user_pass\') {
        $safe_text .= \'" autocomplete="new-password\';
    }
    return $safe_text;
}
add_filter(\'attribute_escape\', \'disable_autofill_password\', 10, 2);
这是对esc_attr 过滤器,关闭id 属性,然后添加autocomplete 属性(new-password 价值is used for Chrome).

SO网友:James

如果有人在乎的话,这是一个对我有效的解决方案

if ( $GLOBALS[\'pagenow\'] === \'wp-login.php\' ) {
  ob_start();
}

add_action(\'login_form\', function($args) {
  $login = ob_get_contents();
  ob_clean();
  $login = str_replace(\'id="user_pass"\', \'id="user_pass" autocomplete="off"\', $login);
  $login = str_replace(\'id="user_login"\', \'id="user_login" autocomplete="off"\', $login);
  echo $login; 
}, 9999);

SO网友:munkiepus

有人制作了一个插件来实现这一点,它不在WordPress插件上,但它非常简单,非常有用。如果您不确定wp插件中没有列出的插件,那么请查看源代码,这是一个很好的做法,我确实这么做了,而且里面没有什么不好的地方。

请参见此处的代码:https://www.buzelac.com/2014/10/disabling-wordpress-login-password-autocomplete/

或者在此处下载插件:https://www.buzelac.com/wp-content/uploads/2015/05/disable-login-autocomplete.zip

没什么大不了的,它只是取代了\'id="user_pass"\' 具有\'id="user_pass" autocomplete="off"\' 生成登录表单时:

$content = str_replace(\'id="user_pass"\', \'id="user_pass" autocomplete="off"\', $content);

SO网友:Yuan Chong

尝试PHP输出缓冲:

add_action(\'login_header\', function () {
    ob_start();
});

add_action(\'login_footer\', function () {
    $content = ob_get_clean();
    $content = str_replace(\' name="log"\', \' name="log" autocomplete="off"\', $content);
    $content = str_replace(\' name="pwd"\', \' name="pwd" autocomplete="off"\', $content);
    echo $content;
});

SO网友:smita mayee debata

打开您的wp登录。php&;在“用户名”字段中添加autocomplete=“off”。查找名为loginform的表单(&A);添加为:

class=“input”value=“size=“20”autocomplete=“off”/>

结束

相关推荐

Disallow second login session

我现在正在努力寻找一个解决方案,持续了两个月,但不幸的是,我没有找到任何结果。我有一个基于订阅的网站,可以播放音乐。客户基本上购买的是一个“面板”,他们在那里听音乐without the need to refresh 页面。我需要的是,如果他们的帐户已经在使用中,就不允许他们登录。我发现许多插件会强制用户注销,但只有在刷新页面时才会发生这种情况。例如,如果:A登录,它也可以工作。B使用相同的帐户登录,此时A将自动注销(我猜是使用Ajax)。过去没有人需要这个,这有点奇怪。有人能帮忙吗?提前谢谢。