WordPress文章内容仅限会员或者登录用户浏览

现在 wordpress 已经不仅仅是一个博客了,更多时候很多人都把 WordPress 当功能强大的 CMS 使了,WordPress 之所以越来越受欢迎,主要在于它强大的扩展性以及良好的社区支持,标题虽然说是会员可见,其实和会员没啥关系,只是已登录用户可见,如果想实现会员可见,还需要新建一个角色,命名为会员,上面中的代码除了要判断用户是否已登录之外还要对用户的角色进行一个判断。

方法一

添加到主题的 functions.php:

  1. function member( $atts, $content = null ) {
  2.        if  ( is_user_logged_in() && !is_null( $content ) && !is_feed() ) {
  3.               return $content;
  4.               return '';
  5.        } else {
  6. 
    
  7.        $yonlendir = get_permalink();
  8.               $form = wp_login_form(array('echo' => false, 'redirect' => $yonlendir ));
  9.               return $form;
  10.        }
  11. }
  12. add_shortcode( 'mem', 'member' );

使用方法

  1. [mem] ..已登录用户才可以看到的内容.. [/mem]

方法二

下面就是我们此方法的代码示例,你可以添加到一个插件中,或者添加到主题的 functions.php:

  1. /**
  2.  * WordPress 只允许已登录的用户查看文章内容
  3.  */
  4. add_shortcode( 'members_only', 'members_only_shortcode' );
  5. function members_only_shortcode( $atts, $content = null )
  6. {
  7.     if ( is_user_logged_in() && !empty( $content ) && !is_feed() )
  8.     {
  9.         return $content;
  10.     }
  11. 
    
  12.     return '要查看文章内容,请先登录。';
  13. }

在上面的代码中,我们注册了一个简码 [members_only] ,在简码的函数中,我们使用了 is_user_logged_in() 函数来判断当前访问者是否登录,同时使用 !empty( $content ) 确保内容不为空,使用 !is_feed() 排除在 RSS 订阅中输出。这样一来,我们可以在文章中使用简码添加内容:

  1. [members_only]这里的内容只为已登录的用户显示[/members_only]

如果当前访问者没有登录,就显示“要查看文章内容,请先登录。”,反之,则显示添加的内容“这里的内容只为已登录的用户显示”。需要注意的是,你必须确保上面的函数代码不要被删除,否则所有简码包含的内容都会直接显示出来哦!

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

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

  1. /**
  2.  * 名称:WordPress某个分类/标签的文章只允许登陆用户阅读
  3.  */
  4. 
    
  5. if( in_category( array( 'music', 'news' ) ) ) {
  6.     if(is_user_logged_in())
  7.         // 注意把下面的...改成你的主题中代码,不要照抄
  8.         the_content(...);
  9.     else
  10.         echo '请登陆后阅读本文!';
  11. }
  12. else {
  13.     // 注意把下面的...改成你的主题中代码,不要照抄
  14.     the_content(...);
  15. }

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

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

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

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

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

  1. /**
  2.  * 名称:WordPress某个分类/标签的文章只允许特定角色的注册用户阅读
  3.  */
  4. 
    
  5.     global $current_user;
  6.     get_currentuserinfo();
  7. 
    
  8.     if(is_user_logged_in() && $current_user->user_level > 3)

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

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

搜索引擎收录说明

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

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

限制标签、用户等级等的修改方式一样!另外,如果你的 Feed 是全文输出的话,其他用户还是可以通过订阅看到相关的内容的!最后一点,以上所做的修改不是完全隐藏文章,所有用户都可以看到文章的标题,如果你想让未授权的用户连标题都看不到,请自行解决。

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/96002

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
开发定制 WordPress主题/插件开发定制 (以最终需求为准)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注

51建站客服微信二维码
点击这里购买