【问题标题】:Restrict access to Wordpress page based on role or capability根据角色或能力限制对 Wordpress 页面的访问
【发布时间】:2012-09-14 03:21:38
【问题描述】:

如何根据用户的role or capability 限制对特定 Wordpress 页面的访问?我知道有各种插件可以实现这一点,我在谷歌搜索时发现了一些非常陈旧的解决方案。

我认为是时候推出一个有效的最新解决方案了。

【问题讨论】:

    标签: php wordpress role restrict capability


    【解决方案1】:

    正如我在回答 a recent question of yours 后试图在 cmets 中解释的那样,以及 the bottom of your linked docsDev Resources 部分中所引用的那样,current_user_can 是(据我所知) 在 User Levels 的替换 (2.0) 和弃用 (3.0) 的情况下测试用户功能的最灵活和全面的方法。

    无论您是允许还是限制访问以查看页面或进行特定更改,与 Wordpress 已经定义的与角色相关联的功能相结合是有意义的。当您使用任何类型的角色范围能力编辑超级管理员插件或功能时,尤其如此。它也不受单个或多站点安装中的应用程序的阻碍,并且覆盖了所有可能的用户。

    当您测试当前用户是否可以执行此操作或执行此操作时,与哪些功能与某些角色或用户级别相关联相比,这些功能发生变化的可能性要小得多。

    你需要知道的关于current_user_can的一切都很好地解释了in the docs,它通常遵循这个逻辑:

    if ( current_user_can('do_something_pertaining_to_the_below') ) {
        echo 'You are a user who can do the above thing, so do the below thing';
        /* the thing */
    }
    

    反过来:

    if ( !current_user_can('some_fancy_capability') ) {
        echo 'No can do';
        return;
    }
    else { /* the similarly fancy, restricted thing */ }
    

    话虽如此,如果有人听说过一种更先进、更聪明的做法,我会全力以赴!

    【讨论】:

    • 感谢您如此详细的回复!我知道这个解决方案,目前我正在使用 if 语句来表示用户是否登录,等等。我为此使用了一个自定义文件 page-slug.php - 我问这个的原因是是否有更好的这样做的方式。尽管如此,我还是赞成你的回答,因为它是正确的,明天我会接受它是正确的。我将保持开放状态,让其他人有机会分享他们的解决方案。
    • 好的,那么 crowjonah,再次感谢您的回复。已接受答案。
    猜你喜欢
    • 1970-01-01
    • 2012-09-09
    • 2023-04-08
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    相关资源
    最近更新 更多