WordPress文章阅读权限 内容只允许特定用户组阅读

WordPress文章阅读权限 内容只允许特定用户组阅读

WordPress提供了包括文章私有和文章加密等功能限制文章内容阅读权限,但是这些功能单一局限性大。 下面介绍WordPress文章内容仅允许特定用户阅读的实现方法。

Cikev.COM20200823223250

限制某个分类/标签的文章内容仅登录用户可见

网站的访客基本分成两类,一类是游客,另一类是用户,论坛程序就是这样区分的,想要实现某个分类或标签的文章只允许登录用户阅读,可以编辑当前主题的single.php,查找:the_content,找到代码形如:the_content(…),…表示未知内容,不同主题不太一样,将其改成:

if( in_category( array( 'js', 'news' ) ) ) {
    if(is_user_logged_in())
        the_content('');
    else
        echo '请登录后阅读本文!';
}

js与news目录下的文章内容就只对登录用户可见了,游客将会看到提示”请登录后阅读本文!”,如果你想再添加一个分类info,可以将in_category( array( ‘js’, ‘news’ ) ) ) 改成in_category( array( ‘js’, ‘news’, ‘info’ ) ) )更多依次类推;如果限定全部目录可以写成 in_category( )。

只对js,df两个标签下文章限制,代码如下:

if( has_tag( array( 'df', 'js' ) ) ) {
    if(is_user_logged_in())
        the_content('');
    else
        echo '请登录后阅读本文!';
}

文章内容只允许特定角色的登录用户阅读

WordPress的注册用户角色包括订阅者、投稿者、管理员等等,对于已经登录的注册用户,同样可以根据用户的角色来决定是否有权阅读文章。

if( in_category( array( 'js', 'news' ) ) ) {

    global $current_user;
    get_currentuserinfo();	
    if(is_user_logged_in() && $current_user->user_level > 3)
        the_content('');
    else
        echo '请登录后阅读本文!';
}

这样等级小于 3 的注册用户将无权阅读分类js和news下的文章。
WordPress注册用户的等级参见以下说明:
0 级对应 订阅者
1 级对应 投稿者
2 – 4 级对应 作者
5 – 7 级对应 编辑
8 – 10 级对应 管理员

被限制文章的内容搜索引擎可见

以上方法修改后,搜索引擎将无法收录这些文章,如果希望搜索引擎收录这些文章同时又限定用户范围。实现代码如下:

if( in_category( array( 'js', 'news' ) ) ) {

function is_se() {
   $u_agent = $_SERVER['HTTP_USER_AGENT'];
   $spiders = '/(spider|bot|slurp|Mediapartners|crawl)/i';

   if ( preg_match($spiders, $u_agent) )
      return 1;
   else
      return 0;
}
    global $current_user;
    get_currentuserinfo();	
    if(is_user_logged_in() && $current_user->user_level > 3 || is_se())
        the_content('');
    else
        echo '请登录后阅读本文!';
}

如果只想搜索引擎查看,不想让优化查看,可以使用上诉方法,但是这种方法也不能做到真正的隐藏,通过一些技术手段仍然可以查看到隐藏的内容。

分享到 :
相关推荐

发表评论

登录... 后才能评论