我正在开发一个可湿性粉剂网站,列出昂贵的物业(别墅、阁楼等)的租金。我的客户与某些学校达成协议,只为他们的学生列出一些便宜的房产,他之前(在他的手工硬编码html网站上)有一个设置好的用户名+密码,他给学校,给他们的学生(学生租赁部分通过htaccess进行访问控制)。
对于他们时髦的新WP网站,他们不想公开/公开注册,因为这些便宜的房产是为特定的学校学生而不是普通公众提供的。但他们也不想限制每次注册。此外,许多学生会使用他们自己的私人电子邮件帐户(如gmail),所以我不能按域名限制注册。
一个用户友好的做法是创建一个用户(“演示用户”,如果您愿意的话),并将此用户名+密码提供给学生所在的学校——然后所有学生都将在此用户配置文件下登录。
然而,只需一个恶意用户更改配置文件的密码和电子邮件地址,就可以为所有人搞糟。
简而言之,我需要一种方法来创建订阅者的子类别,他们可以阅读私人帖子,但不能编辑自己的个人资料,我找不到比“阅读”功能更“原子化”的东西,它似乎包括“阅读帖子”和“编辑自己的个人资料”。
现在,在WP中有很多方法可以做到这一点,但我不确定它们是否会起作用(甚至是可能的),哪种方法是“最佳实践”。
1) 使用Capability manager插件——我还没有找到一个提供禁用“编辑您的配置文件”选项的插件。接受建议。
2) 删除用户子面板管理菜单,并在登录后重定向到前端。
3) 某种“演示用户”插件?
4) 另一种选择是限制或以其他方式密码保护注册,但如何有效地做到这一点,而不会给版主/管理员带来太多麻烦,也不会给最终用户带来太多可用性损失?
我最初想启用“公共注册”,但只是使用我们将发布的站点范围的用户名+密码来访问控制注册/登录页面,但(a)这会很烦人,因为您实际上必须“登录”两次(一次用于apache,一次用于wordpress),以及(b)我尝试通过AskApache的密码保护器插件使用htaccess,但我无法回避permalink/404问题,尽管我遵循了这个示例并将ErrorDocument放入了htaccess文件中,并且出现了一个空白错误。我的根目录中的html文件。
所以你有了它。。。我的l33t g00gl3 sk1llz失败。我的词汇量不强。
最合适的回答,由SO网友:somatic 整理而成
此解决方案纯粹是装饰性的,因为它只是通过jQuery隐藏用户配置文件页面上的字段,但这实际上消除了用户更改密码的能力(管理员仍将看到这些字段,并且可以随时更改)。将此添加到主题的功能中。php文件,您就完成了。
add_action( \'edit_user_profile\', \'hide_profile_options\');
add_action( \'show_user_profile\', \'hide_profile_options\');
function hide_profile_options() {
if( !current_user_can(\'install_themes\') ) : ?>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#your-profile h3:contains(\'Personal Options\') + table").remove();
jQuery("#your-profile h3:contains(\'Personal Options\')").remove();
jQuery("#your-profile h3:contains(\'About Yourself\') + table").remove();
jQuery("#your-profile h3:contains(\'About Yourself\')").remove();
});
</script>
<?php
endif;
}
如果需要,也可以隐藏其他块。。。只需复制行并更改h3内容。。。
就您所描述的而言,隐藏整个用户配置文件管理子面板也可以工作,但这更精确一些。