是否可以阻止订阅者用户更改其密码?

时间:2013-04-08 作者:Frank

我想为我的所有订户用户禁用更改密码选项。

是否可以使用任何插件进行代码调整或其他操作?

Disable password changing option for subscriber users

如果有人有任何想法或插件知识来做到这一点,然后感激。

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

你可以试试

if( current_user_can( \'subscriber\' ) ) {
    add_filter( \'show_password_fields\', \'__return_false\' );
}
另请参见http://wpengineer.com/2285/disable-password-fields-for-non-admins/

http://adambrown.info/p/wp_hooks/hook/show_password_fields

SO网友:birgire

如果要隐藏配置文件页面上的密码字段,可以使用show_password_fields 滤器

add_filter(\'show_password_fields\',\'hide_password_wpse_94968\');
function hide_password_wpse_94968() {
    if(!current_user_can(\'edit_posts\')){
        // hide only for subscribers
        return false;
    }
    return true; // for all other users that can edit posts
}
我们为所有无法编辑帖子的用户(订阅者)隐藏它。

订阅者仍可以通过以下方式检索新密码:wp-login.php?action=lostpassword.

隐藏密码字段之前:

Before hiding

隐藏密码字段后:

enter image description here

SO网友:Steve

这可能是实现类似结果的不同方法

我希望能够阻止任何人通过忘记密码链接更改管理员密码-我希望为订阅者保留忘记密码链接

请注意,如果您运气不好忘记了管理员密码,您需要有一种替代方法来重置管理员密码(例如直接数据库访问)

您可以将此代码中的“administrator”更改为您想要限制的任何用户,例如“subscriber”。

如果管理员试图重置密码(或者更确切地说,如果您的管理员电子邮件已被黑客攻击,而黑客正试图获取重置链接),他们应该无法重置。

应使用标准消息阻止它们:

此用户不允许重置密码

Put this code at the end of your functions.php in your child theme.

// Block Admin Accounts from external Password Reset

function disable_password_reset() {
  return false; 
}

add_action( \'retrieve_password\', \'log_password_requests\' );

function log_password_requests( $user_name_or_email ) {
$user = get_user_by( \'login\', $user_name_or_email );

if (in_array( "administrator", $user->roles )){
   add_filter ( \'allow_password_reset\', \'disable_password_reset\' );
   }else{
   remove_filter ( \'allow_password_reset\', \'disable_password_reset\' );
}
}
学分-感谢:

您可以使用以下代码获得角色:

Getting a user role from the user login name

这就是我的阻塞代码的来源:

https://www.isitwp.com/disable-the-allow_password_reset-feature/

您可以扩展要阻止的选项数,或者使用! 选择users->roles 数组应该是您想要的。感谢:

https://stackoverflow.com/questions/2440506/how-to-check-if-an-array-value-exists

同时打开https://www.geeksforgeeks.org/php-in_array-function/

这就是我得到代码的地方——最初是为了记录试图更改密码的人——我用它包装并触发密码重置阻止功能。它提供钩子来检测何时发出密码重置请求,并抓取发出请求的用户。正如这篇文章所建议的,您还可以添加一行记录用户。

How can I tell who changed the password?

这个答案提供了一些关于如何将日志文件与PHP错误日志分开的有用想法:https://stackoverflow.com/questions/4660692/is-it-possible-to-print-a-log-of-all-database-queries-for-a-page-request-in-word/4660903#4660903

我在其他任何地方都找不到这个确切的功能,所以希望它能帮助别人。

如果我的代码不完全是WordPress的完美代码,但到目前为止,它已经在六个网站上运行过,并且表现出了预期的效果,我深表歉意。它使用标准的功能wp-login.php 模板-抱歉,对于那些想要更多个性化内容的人,这里还有其他代码。

结束

相关推荐

Wp-plugins(必须使用Plugins)URL是否可以在unctions.php中使用?

wp插件(必须使用插件)URL是否可以作为在函数中使用的目标。php?我有一个mu函数。mu plugins文件夹中的php文件。一个函数调用javascript文件(alerts.js) 位于example.com/wp-content/mu-plugins/js/. 如何在我的函数中定位mu插件文件夹?目前,我正在使用get_site_url() . \'/wp-content/mu-plugins/js/alerts.js\',虽然与问题不完全相关,但这是用于调用javascript文件的完整函数: