2015-09-24 25 views
-2

所以我正在寻找一种方法来防止特定的电子邮件注册我的网站上的帐户。这是一个wordpress.org网站。防止特定的电子邮件注册Wordpress.org

我试过Ban Hammer插件,但它不起作用。

我不是在寻找评论,但为网站本身。就像我可以放在functions.php或某个地方的代码一样,当这个特定的电子邮件被用来尝试和注册我的网站上的帐户,以获得一个错误。

不是整个电子邮件域,例如@ gmail.com。但是一个特定的电子邮件,例如,[email protected]

任何人都知道该怎么做?


编辑:我发现这个教程在这里:http://www.davidtiong.com/block-spam-registrations-on-wordpress/

我试图在文件的最底部在functions.php中添加该文件正上方的最后>:

function dtwd_blocked_emails($user_email) { 
    $dtwd_blocked_list = array("[email protected]",); 
    $user_email_split = explode('@', $user_email); $user_email_domain = $user_email_split[1]; 

    if (in_array($user_email_domain, $dtwd_blocked_list)) { 
     //Return 1, for detection 
     return 1; 
    } else { 
     //Return 0 for no detection 
     return 0; 
    } 
} 

?而且我还在我的主题的register.php中加入了这个:

elseif (dtwd_blocked_emails($user_email) == 1) { 
    $errors->add('blocked_email', __('<strong>ERROR</strong>: This email is not allowed.')); 
} 

而且我添加了相同的co de在我的主题login.php。

然后我尝试注册与此电子邮件帐户(应该已被锁住):[email protected]

该网站让我注册,它让我登录。该电子邮件现在应该已被阻止,并在我尝试注册和/或登录时返回错误。

+1

我不打算把它写你...但你可以考虑挂钩到像['registration_errors'](https://codex.wordpress.org/Plugin_API/Filter_Reference/registration_errors)动作钩子,并在那里做一些验证。 – rnevius

+0

恩,谢谢Rnevius。我正在查看你发布的链接中的代码,我认为这就是我需要的,但我不知道如何为我的需求制作代码。任何机会,你可以......写给我......尽我所能去问? – Overloard

+1

我很乐意帮助你,但你需要先尝试一下。如果仍然无法正常工作,请通过编辑发布您尝试过的(以及出现的问题)[最小,完整和可验证的示例](http://stackoverflow.com/help/mcve)你原来的问题。 – rnevius

回答

1

我真的不知道该功能应该如何工作(它甚至没有挂钩任何东西......)。我没有测试过这个,但是听起来像在运行registration_errors过滤器挂钩时验证电子邮件一样简单。来自Codex:

registration_errors filter hook过滤新用户注册时遇到的错误。如果在$errors中存在任何错误,则会中止用户的注册。

这听起来和你想要做的完全一样(如果用户电子邮件在你的黑名单中,注销会中止)。同样,这种未经过测试的,但我会尝试像在的functions.php如下:

function so_32767928_blacklisted_user($errors, $sanitized_user_login, $user_email) { 

    // One or more blacklisted emails to validate against 
    $blacklist = array('[email protected]',); 

    // If the user trying to register is in the blacklist, add an error message 
    if (in_array($user_email, $blacklist)) { 
     $errors->add('blacklist_error', '<strong>ERROR</strong>: This email is not allowed to register on this site.'); 
    } 

    // Always return $errors, even if there are none 
    return $errors; 
} 
add_filter('registration_errors', 'so_32767928_blacklisted_user', 10, 3); 
+0

非常感谢你Rnevius。那就是诀窍。完美的作品。非常感谢你:) – Overloard

+1

不客气。只是一个笔记......任何时候你需要“破坏”WordPress动作的正常流程,通常都会有一个动作钩子或过滤器钩子来执行此操作。这些改变几乎总是在* functions.php *中完成,需要几个参数并返回修改后的变量。干杯。 – rnevius