WordPress设置文章只允许特定用户阅读
2017-02-19 13:39:51   来源:   评论:0 点击:

WordPress本身也提供了相应功能来实现这个目的,包括文章私有和文章加密等,但是这些功能都比较大一,如何限定授权用户和文章的范围呢?本
WordPress本身也提供了相应功能来实现这个目的,包括文章私有和文章加密等,但是这些功能都比较大一,如何限定授权用户和文章的范围呢?本文将给你介绍这方面的内容。


某个分类/标签的文章只允许登陆用户阅读

网站的访客最基本的可以分成两类,一类是非注册用户,另一类是登陆用户,很多论坛的就是这样区分用户,部分内容只能登陆后查看,之前我写了一个插件来让WordPress来实现类似功能,但是只能对单篇文章起作用,如果想要实现某个分类/标签的文章只允许登陆用户阅读,可以用文本编辑器打开当前主题目录下的single.php,查找:the_content,可以找到类似代码:the_content(...),(注:...表示未知内容,不同主题不太一样),将其改成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * 名称:WordPress某个分类/标签的文章只允许登陆用户阅读
 * 作者:露兜
 * 博客:https://www.ludou.org/
 * 最后修改:2010年12月30日
 */


if( in_category( ( 'music', 'news' ) ) ) {
    if(is_user_logged_in())
        // 注意把下面的...改成你的主题中代码,不要照抄
        the_content(...);
    else
        echo '请登陆后阅读本文!';
}
else {
    // 注意把下面的...改成你的主题中代码,不要照抄
    the_content(...);
}

这样分类别名或名称为 music 和 post 的分类下的文章内容就只对登陆用户开放了,游客将会看到提示"请登陆后阅读本文!",如果你想再添加一个分类images,可以将 array( 'music', 'post' ) 改成 array( 'music', 'post', 'images' ),更多依次类推;如果只限定一个分类music可以写成 in_category( 'music' ) 。如果是限定含有某些标签的文章只对登陆用户开放,可以将以上代码第 8 行改成:

1
if( has_tag( ( 'music', 'news' ) ) ) {

music和news为标签的名称或别名,多个标签的写法跟分类相同!

某个分类/标签的文章只允许特定角色的注册用户阅读

WordPress站点的注册用户还可以分三六九等,包括订阅者、投稿者、管理员等等,对于已经登陆的注册用户,同样可以根据用户的角色来决定是否有权阅读文章,在第一部分内容的基础上再加个限制条件就可以了,将第一部分代码的第 9 行改成:

1
2
3
4
5
6
7
8
9
10
11
/**
 * 名称:WordPress某个分类/标签的文章只允许特定角色的注册用户阅读
 * 作者:露兜
 * 博客:https://www.ludou.org/
 * 最后修改:2010年12月30日
 */


    global $current_user;
    get_currentuserinfo();
   
    if(is_user_logged_in() && $current_user->user_level > 3)

这样等级小于 3 的注册用户将无权阅读分类music和news下的文章,文章标签的限定类似,详见第一部分的说明。WordPress注册用户的等级参见以下说明:

  • 0 级对应 订阅者
  • 1 级对应 投稿者
  • 2 – 4 级对应 作者
  • 5 – 7 级对应 编辑
  • 8 – 10 级对应 管理员

某个分类/标签的文章只允许知道密码的用户阅读

如果你想给某个分类或标签下的文章全部添加密码,只有知道密码的用户才能阅读这些文章,你可以使用我写的WordPress插件:,或者看这篇教程操作:

搜索引擎收录说明

按照以上各方法修改后,搜索引擎将无法收录这些文章,如果你希望搜索引擎收录这些文章同时又限定用户范围,可以再添加一个限定条件,将第一部分代码的第 9 行改成:

1
2
3
4
5
6
7
8
9
10
11
function is_se() {
   $u_agent = $_SERVER['HTTP_USER_AGENT'];
   $spiders = '/(spider|bot|slurp|Mediapartners|crawl)/i';
   
   if ( ($spiders, $u_agent) )
      return 1;
   else
      return 0;
}
   
if(is_user_logged_in() || is_se())

限制标签、用户等级等的修改方式一样

相关热词搜索:用户 文章

上一篇:php执行时间越过了配置文件中设置的最大执行时间
下一篇:WordPress各用户角色都有哪些权限

分享到: function postToWb(){ var _t = encodeURI(document.title); var _url = encodeURIComponent(document.location); var _appkey = encodeURI("cba3558104094dbaa4148d8caa436a0b"); var _pic = encodeURI('https://www.aovhf.com/article/uploadfile/2017/0219/20170219014137459.png'); var _site = ''; var _u = 'https://v.t.qq.com/share/share.php?url='+_url+'&appkey='+_appkey+'&site='+_site+'&pic='+_pic+'&title='+_t; window.open( _u,'', 'width=700, height=680, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, location=yes, resizable=no, status=no' ); } document.write(''); document.write(''); document.write(''); document.write(''); document.write(''); 收藏