为 WordPress 增加只有特定的 VIP 角色的用户才可以阅读某些内容的功能

文 / @WordPress主题

小本本的WordPress教程

在一些以内容为主的网站上,往往有一些仅限于高级用户才可以查看的内容。比如我们常说的VIP用户。在程序中,这种逻辑很容易实现,只需要判断用户的角色或权限是否满足条件,满足则显示内容,不满足则隐藏。

WordPress提供了比较完善的角色和权限系统,同时还有方便的API可以自定义角色和权限。本教程将简单介绍如何通过WordPress的角色和权限API来添加用户角色,并使某些内容仅对VIP用户可见。

基于现有角色创建VIP角色

我们可以使用WordPress的角色和权限API创建一个新的用户角色,也可以在现有角色的基础上创建一个新角色。由于我们需要的新角色与WordPress内置角色略有不同,为了减少代码量,本文使用了现有角色的复制功能来创建新角色。

// 创建VIP用户角色
add_action('admin_init','remove_shop_caps');
function remove_shop_caps(){

//首先获取订阅者角色。
$subscriber = get_role('subscriber');

//然后基于订阅者角色的权限新建一个角色。
$vip = add_role('vip', 'VIP用户', $subscriber->capabilities);
$vip = get_role('vip');

//移除新角色的一些不需要的权限。
$vip->add_cap('read_vip_content');
}

将上面的代码添加到主题的functions.php文件中后,在仪表盘的编辑用户界面中,“VIP用户”将出现在可选角色列表中。

创建仅限VIP用户阅读的短代码

在创建了新的用户角色后,我们接下来需要做的是添加仅限于VIP用户阅读的内容。为此,我们使用了短代码的方式来实现这个功能。

/*设置仅限VIP用户阅读的短代码*/
if(!function_exists('shortcode_vip_content')){
    function shortcode_vip_content($atts){
        $default = array(
            'content' => 'VIP用户可以查看的内容',
        );
        extract(shortcode_atts($default, $atts));

        if(current_user_can('read_vip_content')){
            $retour = $content;
        }else{
            $retour = "你不是VIP,你不能查看这些内容。";
        }

        return $retour;
    }
}
add_shortcode('vip_content', 'shortcode_vip_content');

当我们添加仅限VIP用户阅读的文章时,我们只需在文章中添加短代码vip_content="仅供VIP用户阅读的内容",即可实现只有VIP用户可见的内容。为了方便操作,我们还可以使用shortcake插件向文章发布页面添加短代码UI,但这已超出了本文的讨论范围,有兴趣的朋友可以自行尝试。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。