wordpress用户注册和登陆时 给加一个特殊的验证口令
wordpress 2025-07-26 89
下面给出3种常见做法,从「最简单」到「较安全」依次排列。你可以根据站点规模、是否愿意装插件、以及是否愿意改代码来取舍。
方案一:用现成插件(最简单,30 秒搞定)
后台 → 插件 → 安装插件
搜索并安装 「Access Category Password」 或 「Password Protected」(两款都支持给整站或注册/登录页单独加口令)。
启用后进入设置页,把「注册 / 登录页」勾选,并填好你想要的「特殊验证口令」。
保存即可。
以后任何人访问 /wp-login.php?action=register 或 /wp-login.php 时,都会先弹一个口令框,输入正确后才能看到 WordPress 原生注册/登录表单。
优点:不改代码、不担心升级被覆盖。
缺点:多了个插件,且口令是全局的,无法给不同用户发不同口令。
方案二:在主题的 functions.php 里加 10 行代码(无插件,轻量)
把下面代码扔进「子主题」或「Code Snippets」插件里即可。
作用: 在登录和注册表单各加一个文本框;如果用户没填或填错,就拒绝提交。
/**
* 给登录/注册表单额外增加一个口令字段
*/
add_action( 'login_form', function () {
echo '<p>
<label for="my_secret">' . __( '站点口令', 'txtdomain' ) . '<br/>
<input type="text" name="my_secret" id="my_secret" class="input" value="" size="20" /></label>
</p>';
});
/**
* 登录时校验
*/
add_filter( 'authenticate', function ( $user, $username, $password ) {
if ( empty( $_POST['my_secret'] ) || $_POST['my_secret'] !== 'wodepress' ) {
return new WP_Error( 'wrong_secret', '<strong>错误</strong>:站点口令不正确。' );
}
return $user; // 继续让 WordPress 做用户名密码校验
}, 30, 3 );
/**
* 注册时校验
*/
add_action( 'register_post', function ( $username, $email, $errors ) {
if ( empty( $_POST['my_secret'] ) || $_POST['my_secret'] !== 'wodepress' ) {
$errors->add( 'wrong_secret', '<strong>错误</strong>:站点口令不正确。' );
}
}, 10, 3 );
把 ‘wodepress’ 换成你自己的口令即可。
优点:无插件,代码量小。
缺点:每次换口令要改代码;若主题升级被覆盖,需重新放一次(所以最好用子主题)。
方案三:使用「邀请码」插件(可给不同人不同码,较安全)
安装 「WP Invites Code」 或 「BuddyPress Invite Code」。
在插件后台生成一批一次性/可限制使用次数的邀请码。
注册页面会自动出现一个「邀请码」输入框,后台可实时查看使用记录。
适合内测、小范围邀请、防止撞库爆破。
常见问题
只想挡机器人,不想挡真人?
装 「WPS Hide Login」 把登录地址改掉,再配合 「Limit Login Attempts Reloaded」 防爆破,比口令更轻量。
想彻底关闭公开注册,只让管理员后台手动建账号?
设置 → 常规 → 取消「任何人都可以注册」,然后在「用户 → 添加用户」里手动建号即可,口令功能就省了。
一句话总结:
图省事 → 用插件(方案一或三)。
想极简 → 贴上面 10 行代码(方案二)。