在某些情况下禁用注册

时间:2013-02-18 作者:dexBerlin

我的代码中有一个特定的条件(如果用户从网络范围访问页面),我可以很容易地询问这个条件,比如:

if ( $user_in_allowed_range)
我想要的是只向满足此条件的用户提供注册按钮,其他用户应该仍然能够登录。

有没有办法在WordPress中做到这一点而不必对核心进行黑客攻击?附加的自定义登录表单不是解决方案,因为原始表单仍然可用。

我找到了一些钩子(login_form, login_head, user_register …) 以及主题功能wp_login_form() 但它们并没有提供我所需要的功能。

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

自从get_option(\'users_can_register\') 将返回用于显示注册链接的“任何人都可以注册”设置的设置值,您可以添加get_option 筛选器重写的值users_can_register 钥匙在这种情况下,我甚至认为pre_option_%s 过滤器是您的最佳选择,因为设置的实际值无关紧要。类似的方法可能会奏效:

add_filter(\'pre_option_users_can_register\', \'wpse_87341_users_can_register\');

function wpse_87341_users_can_register() {
    // Obviously here you\'d populate $user_in_allowed_range
    // ...

    return intval($user_in_allowed_range); // We need to return an int since get_option does not like false return values
}

结束

相关推荐

修改wp-login.php标签:用户名为电子邮件

如何编辑wp-login.php 类型我使用电子邮件登录,所以我需要更改username 到email.这里的答案似乎过时了,或者与SSL或其他东西不兼容:Function to change a label (Username) in a core WordPress File (wp-includes/general-template.php) 我在函数文件中尝试了此操作,但没有成功:function wpse60605_change_username_label( $defaults ) {