WordPress插件发布:隐藏内容登陆后可见

2010年05月25日

Languages: English中文(简体)

     应 流年 网友的请求,特地研究了一下在WordPress博客中,如何实现隐藏文章的部分内容,使得用户在登陆后才可以看到。其实这个难度不是很大,WordPress提供了很多的编程接口,可以很方便的实现很多功能,现在我使用WordPress Shortcode API,也就是简码,做了一个插件,基本上可以满足文章隐藏内容,登陆后可见的需求。之前也有人开发过相关的插件,不过那是隐藏文章全部内容,不能做到只隐藏部分内容,可以说今天我做的这个插件更加灵活一些。

     1.0版推出后不久,网友yken89提了一个非常有建设意义的意见。2.0版本采纳该网友的建议,添加了新的标签 <!--loginview start-->hidden contents.<!--loginview end-->,并在HTML模式下,添加了loginview按钮,方便用户添加隐藏内容。2.0版借鉴了WordPress插件Easy2hide的部分代码。升级至2.0版后,原来的标签[loginview]仍然有效。

 

名称:Login to view all
版本:2.0
作者:Ludou
更新:2010-05-28
功能:您可以隐藏文章的部分内容,使得用户必须登录,才能浏览。
下载:WordPress 官方下载
WordPress最低版本要求:WordPress 2.7 及更高版本

 

安装方法:

1. 下载插件,解压缩,你将会看到一个文件夹login-to-view-all,然后将其放置到插件目录下,插件目录通常是 `wp-content/plugins/`
2. 在后台对应的插件管理页激活该插件Login to view all
4. 完成

 

使用说明:
1. 在WordPress后台编辑文章的时候,切换到HTML模式,选中你要隐藏的内容,点击按钮 loginview 即可用<!--loginview start--> 和 <!--loginview end--> 将隐藏内容括起来;使用这个标签的好处是,你停用本插件后,该标签不会被显示出来。

2. 如果你不喜欢HTML代码模式,可以使用 [loginview] 和 [/loginview] 将你想要隐藏的内容括起来,该标签支持可视化模式和HTML编辑模式。你的文章内容应该像这样子:[loginview]这里是你要隐藏的内容[/loginview]

3. 这样未登录的用户浏览文章的时候,将无法阅读隐藏的内容。

 

效果预览图:

隐藏内容登陆后可见

 

Plugin name:Login to view all
Version: 2.0
Author: Ludou
Update: 2010-05-28
Description:Login to view all is an plugin designed to help you add hidden contents of your post. The hidden contents are only visible for the visitor who are logged in.
Download: From wordpress.org

Installation:

  1. Upload to your plugins folder, usually `wp-content/plugins/` and unzip the file, it will create a `wp-content/plugins/login-to-view-all/` directory.
  2. Activate the plugin on the plugin screen.
  3. Done

How to use?

1. You can switch to HTML editor and click the "loginview" button, to put your words needed to hide between "<!–loginview start–>" and "<!--loginview end-->". like:

<!--loginview start-->hidden contents.<!--loginview end-->

This has the advantage of that if you disable this plugin, the tag <!--loginview start--> and <!--loginview end--> will still not be displayed.

2. Or you can use it like that in your blog post : [loginview]hidden contents.[/loginview]
, [loginview] can be use in the visual editor and HTML editor.

Screenshots

Login to view all1


 

Login to view all2

露兜博客博主,计算机科学与技术专业本科在读,男生,儒家思想受益者。文采不佳,不喜欢聚光灯,不喜欢吹牛,不喜欢无序的做事方式。闲时喜欢写些代码自娱自乐,并在博客中分享一些个人技术经验。

点击支持作者 2
标签: ,
Advertising
  1. 2010年8月14日 20:08 | #1

    你好,请问为什么我插件装上去了,编辑栏也有这个按钮了,为什么就不可以隐藏呢?郁闷啊。。。我的版本啊2.92的。着急啊。。请问博主这个是什么原因呢?

    [回复]

    Ludou 回复:

    因为你已经登录了。

    [回复]

    淘流行部落 回复:

    呵呵,我给忘了。推出后就有效果了。感谢您的插件!

    [回复]

  2. 2010年8月12日 13:13 | #2

    在WordPress 3.01 和 cos-hml-cache 的夹击下,好像不能正常工作

    [回复]

    Ludou 回复:

    你都将页面全静态化,还想着PHP实现动态内容,简直是异想天开。用了静态插件cos-hml-cache,你就应该深刻理解什么是鱼和熊掌不可兼得了。

    [回复]

    5169.info 回复:

    静态化之后还能实现 密码保护,我觉得 这个登录可见也应该能实现。曾经cos-html-cache有个bug——即使密码保护的也能静态出来

    [回复]

    Ludou 回复:

    首先一点,密码保护是WordPress自带的功能,cos-html-cache不兼容也不行。

    哦?那你在主题目录下的sidebar.php中添加一些php代码,如随机文章之类的,然后生成静态html文件后,看侧边栏的随机文章刷新一次就更新一次?

    如果能的话,那么这款插件也可以与cos-html-cache兼容。

    这不是BUG不BUG的问题,而是关乎HTML和PHP的问题,静态化后浏览器访问的是对应目录下的.html文件,在传统意义下.html文件是无法嵌入php代码的,html文件定义了什么内容就会显示什么内容,不会因为用户不同而显示不同内容。

    要做到与cos-html-cache兼容,就必须去研究它的更新缓存机制,还要修改添加大量代码,我没心情去看cos-html-cache的几千行代码。

    Login to view all插件不会因为个别用户使用了静态化插件而去添加其他用户不需要的多余代码,牺牲大部分用户的执行时间。

    如果你学过html和php,你会理解我所说的。

    [回复]

  3. 2010年7月5日 23:26 | #3

    没开放注册,能弄成留言后查看么

    [回复]

    Ludou 回复:

    插件Easy2hide
    http://wordpress.org/extend/plugins/easy2hide/

    [回复]

  4. charbin
    2010年6月30日 15:20 | #4

    在我的使用过程中,出现一个bug,索引页(显示摘要)仍然能看见隐藏的那部分文字! 只在single页面中才有效果! 我如何让所引页也不显示隐藏的内容呢?

    [回复]

    Ludou 回复:

    你可以看看我的实验博客 http://ludou.co.tv/ 第一篇文章,隐藏内容已经出现提示:本文隐藏内容 登陆 后才可以浏览

    实验博客首页使用这个函数来输出摘要:<?php the_excerpt(); ?>

    如果你是使用<!–more–>来输出摘要,而且是这样的使用:
    <!–loginview start–>隐藏内容<!–more–>隐藏内容<!–loginview end–>

    <!–more–>之前的内容将正常显示!

    所以,请不要在摘要中添加隐藏内容!

    如果你是直接截取文章的固定字数作为文章摘要,本插件无效,且不属于BUG,因为这个不属于本插件的考虑范围!

    [回复]

    charbin 回复:

    其实这点很好解决的。
    实际上,使用者只用使用了<!–loginview start–>便签,就说明使用者有意将<!–loginview start–>和<!–loginview end–>之间的内容,现在由于the_excerpt()函数导致上述标签被截断,<!–loginview end–>便签丢失。

    所以在这种情况下(有start便签,无end便签),只需要将<!–loginview start–>之后的内容都视为隐藏内容即可。

    这样可以减轻使用者的麻烦,造福粗心者。毕竟个人博客有些内容是不希望被公开的。

    [回复]

    Ludou 回复:

    首先说明一点,the_excerpt()可以正常地隐藏掉需要隐藏的内容,不隐藏的内容可以正常显示,<!–loginview end–>标签也不会被截断,只是没有输出具体的CSS样式!具体见http://ludou.co.tv/第一篇文章,文本提示“本文隐藏内容 登陆 后才可以浏览”前后的内容都可以正常显示!

    如果照你这么说的话,那么插件将可能隐藏掉用户不想隐藏的内容。

    另外,<!–loginview start–>和<!–loginview end–>,如果用户连这两个标签都没办法写全,我建议他不要使用本插件!

    “毕竟个人博客有些内容是不希望被公开的。”本文很多评论都不支持你的这个观点。

    [回复]

    charbin 回复:

    别生气嘛,只是讨论一下。

    起码可以隐藏<!–loginview start–>和<!–more–>之间的内容就可以了。加个条件就行,也不费时。我自个儿弄弄。

    只是我从程序完善性上提了这个问题。就当没说啊

    [回复]

    Ludou 回复:

    我也只是在阐述我的观点,并没有生气之说。

    charbin 回复:

    怎么我后面的留言没看见了。 删了?

    [回复]

    Ludou 回复:

    缓存!

    [回复]

  5. 2010年6月23日 10:50 | #5

    这样做会让访客感到反感的,除非人家急需某些东西才会去注册。
    一般的都是直接闪人了。

    [回复]

    Ludou 回复:

    不同的网站有不同的需求,并不是每个网站都像你那样拿用户体验当回事!
    用户体验也并不是非得首要考虑,有些时候损失了用户体验能获得更好的效果,就像Godaddy的用户体验做得很差劲,每每弹出促销广告,但是这也让他们获得了很可观的销售业绩。

    [回复]

  6. 慕名而来
    2010年6月22日 01:21 | #6

    找到原作者了应该..好像是我没有仔细看使用说明….
    在研究研究

    http://dallaslu.com/easy2hide/

    [回复]

  7. 慕名而来
    2010年6月22日 00:58 | #7

    因为有些内容需要登录或者回复才可以查看,就找到了 easy2hide 这个插件,但这个插件只要回复了任何一篇文章,那么全站的文章隐藏的内容都可以看了,不知道是我没设置还是插件就这样,

    而您介绍的插件,只是针对登录用户,登录了就可以查看了…

    而我在..http://shamas.me/i-hope-that-rumor-spring-mp3-download/ 这里看见的文章,他这篇文章就是隐藏了内容,在别的文章评论后来这篇文章一样看不到内容.至于是不是限制登录,登录以后就能看见,我没注册,但我回复过该文章后就可以看隐藏内容了..

    这个…有没有一款插件是,登陆后回复了该文章才可以查看该文章隐藏内容? 很期望..

    如有回复,请邮件通知..谢谢

    [回复]

  8. 2010年6月19日 18:41 | #8

    怎么修改“本文隐藏内容…."这几个字?我修改了.mo .po 也不起效果,修改.po时它提示了编码问题!

    [回复]

    Ludou 回复:

    你可以将插件目录下的login-to-view-all.php,更改代码:
    return '<div style="text-align:center;border:1px dashed #FF9A9A;padding:8px;margin:10px auto;color:#FF6666;">' . __('You must be ', 'ludouview') . '<a href="' . wp_login_url( get_permalink() ) . '">' . __('logged in', 'ludouview') . '</a>' . __(' to view the hidden contents.', 'ludouview') . '</div>';

    将You must be logged in to view the hidden contents.字样改成你相应的中文,然后UTF8编码保存。

    [回复]

  9. 阿斑
    2010年6月17日 14:40 | #9

    初次拜訪,您好~
    这插件好酷!!找了类似的功能好久呢!!
    请问是否有办法"输入密码观看部分隐藏文章"呢?
    私人的博客若不想开放注册的话,是否有办法实现?
    非常感谢~

    [回复]

    Ludou 回复:

    在你编写文章的时候,右边栏 – 公开度: 发布,点击后面的编辑,选择密码保护即可。这样要想查看你的文章,必须输入密码。

    [回复]

    阿斑 回复:

    喔喔!!感谢如此快就答复问题~
    不过WP这个功能是会直接隐藏所有的内容呢,
    若是只有文章一部分的内容想要隐藏密码观看也可实行吗?
    和easy2hide也有点相像,
    只是把回复可见的部分转换为密码输入可见:)

    先前有找到过 Better Protected Pages(http://www.madeglobal.com/wordpress/better-protected-pages/protected-page/) 这个插件,
    但我的WP无法运行,且这似乎只适用于 PAGE,
    所以想问问是否有可实现在一般文章里的方法~
    再次感谢耐心答复~:D

    [回复]

    Ludou 回复:

    暂时没发现这样的功能,也没见过这样的插件。你自己使用搜索引擎搜搜。

    [回复]

  10. 2010年6月9日 10:15 | #10

    很强大,不过我碰见这个要登录的请求后,大部分情况下会离开网站,如果内容不是很具有吸引力的话。这个客户化很牛,也许可以隐藏某些具有重要价值的下载链接或者图片

    [回复]

    Ludou 回复:

    这个根据不同博客的需要吧,如某些博客的某些内容只对付费会员开放。

    [回复]

  11. 2010年6月1日 20:22 | #11

    哇噢。其实 easy2hide 几乎是死了。

    [回复]

    Ludou 回复:

    根据WordPress的统计信息,easy2hide目前仍然有人在下载,仍然有人在使用,只是你没有出新版本罢了。不过该插件,仍然可以运行于新版本的WordPress,这才是关键。

    [回复]

  12. 2010年5月28日 20:27 | #12

    好强大

    [回复]

    Ludou 回复:

    强大,但是一般人用不着

    [回复]

  13. 2010年5月27日 21:01 | #13

    只要用is_user_login_in()函数判断一下就OK了

    [回复]

    Ludou 回复:

    如果只是修改主题文件,做不到灵活应用,在后台编写文章默认是无法用php代码的。

    本插件的核心也是is_user_login_in(),不过应用了WordPress Shortcode API,后台编写文章的时候比较方便点。

    [回复]

  14. 2010年5月26日 06:52 | #14

    真够速度的,谢谢你啦,还有个问题,能不能实现例如这样效果:点击 “download" 弹出登陆对话框,然后注册用户登陆后,看到隐藏的内容。不过现在已经很好了!

    [回复]

    Ludou 回复:

    这个具体查看文章:
    http://www.ludou.org/wordpress-create-a-login-form-overlay.html

    [回复]