谁见过 wordpress上不了 上可用的 ...

请直接用微信扫描,加入创业学研社:
目前本站正在寻求合作伙伴、合伙人,如果你对经营一个wordpress教程内容网站有兴趣或有资源、有技术,请联系老伍:
我们为您提供的WP教程列表:
[WordPress快速建站教程]
[WordPress功能详解视频教程]
[WordPress主题结构讲解视频教程]
[WordPress主题案例分析视频教程]
[WordPress主题标签讲解视频教程]
[WordPress博客主题制作视频教程]
[WordPress仿站视频教程]
[WordPress淘宝客主题制作视频教程]
[WordPress CMS主题制作视频教程]
[WordPress企业建站视频教程]
[WordPress插件制作视频教程]登录以解锁更多InfoQ新功能
获取更新并接收通知
给您喜爱的内容点赞
关注您喜爱的编辑与同行
966,690 一月 独立访问用户
语言 & 开发
架构 & 设计
文化 & 方法
您目前处于:
从WordPress看开源平台的发展
从WordPress看开源平台的发展
0&他的粉丝
日. 估计阅读时间:
:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!
亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的。
相关厂商内容
相关赞助商
这是一个天才的构想,无论从商业还是从用户需求角度来讲。但这个架构存在一个核心的问题,那就是开放平台是中心化的。当然,这更多的是应用开发商的问题,因为小扎是不会去考虑Facebook倒闭的时候上边的应用开发者要怎么活的。
从这个角度看,WordPress是一个更进一步的平台,它不但释放了控制权,还释放了所有权。给WordPress开发插件的开发者从来没担心过Automattic公司倒闭会对自己造成影响,而用户,绝大部分都不知道Automattic公司和WordPress是什么关系。这正是开源运动带给我们最核心的价值,它承诺用户得到的东西永远不会失去,即使它不会变好,那它也不会变得更坏。哪怕天荒地老、海枯石烂,只要你能找到服务器,你就可以继续你已经习以为常的工作和生活。不要说和那些商业公司的忽悠比,这简直比男女朋友的承诺都靠谱。
我把这种同时释放控制权和所有权的平台称作开源平台,WordPress、Vanilla论坛、Concrete5 CMS都是这类平台。
开源平台如何商业化?
商、商业化?是的,你没看错。我们生活在一个商业社会,离开了钱什么事情都无法推进。开源软件并不活在真空中,它一样要和那些商业软件竞争,融入商业的链条是不可避免的。所有将开源项目运营的风生水起的团队,对商业的理解都入木三分。
我们来看看WordPress。其实最开始,WordPress是一个功能很一般的程序,性能更是悲剧,直到今天它对内存的吞噬都是虚拟主机商会呼吸的痛,那么它凭什么一统天下?
答案是生态系统。我们已经生活在一个平台的时代,用户选择一个产品,不单会考虑产品本身,更多的会考虑产品背后的生态。一个能运行Android系统的电视盒,对用户来说意味着数以万计的可运行应用。你可以很容易做一个比它更优秀的电视盒,但如果只能运行你的专有系统,那么用户不会掏钱的,得生态者得天下。
而构建生态系统本质上就是构建一个可持续发展的多方收益模式。大家可能都知道WordPress是的协议,但WordPress专门为插件部分做了一个特例申明,使其不受GPL约束。你可以给WordPress设计模板、开发插件,然后按你的想法去处理:收费、闭源、使用GPL或者协议。更让人称赞的是,只要你贡献出这些扩展,它就成为整个WordPress用户群、甚至全人类的财富,整个生态就更向前进了一步。和某些开放平台比起来,这种进步可能太慢,但它却不会因为某天商业公司的老总不小心脑袋被电梯夹了而坍塌。
正是这种缓慢而切实的进步,在十年的时间里一点点蔓延,直到渗透至互联网的各个角落。到去年,WordPress光是免费插件就超过1.9万,累计下载量超过2.85亿次。WordPress甚至造就了一个行业,一套优秀的WordPress收费模板,能在定价100美金的情况下一个月卖出去几百套。
第三方挣钱后,Automattic并没有跳出来要分钱,而是选择了以增强用户体验为切入点的双赢方式:
为了解决没有服务器也想用WordPress用户的需求,Automattic推出了WordPress托管服务,采用免费+增值的方式,通过直接收费和google adsense挣钱
为了帮助用户远离垃圾留言,Automattic推出了AKismet服务,这个服务对个人免费,对企业收费
为了让用户随时能备份数据,Automattic推出vaultpress收费备份服务 无需更多举例,在庞大的用户基数上,每一项增强服务都能带来真金白银。
开源平台如何控制用户行为?
和开放平台不同,开源平台控制不了具体的用户行为,你不可能越过之前的授权协议去对某个用户的行为指指点点。但幸运的是,通过产品设计,我们可以在宏观上影响用户行为。人类其实是很简单的生物,这可不光是喵星人的想法,科学家也这么想,让两组人听一个建议,被要求一直点头的那个组对建议的同意度明显比被要求一直摇头组高。
好了,我们还是讨论地球上的事吧,我来告诉你WordPress是怎么影响用户行为的。开源软件最麻烦的问题就是用户随意修改代码,一方面我们设计好的行为被改变了,另一方面用户的随意行为也会带来软件的不稳定从而增加客服压力。
WordPress没有强制不允许用户修改代码,而是做了一件看起来毫无关联的事情:他们提供了WordPress的在线升级,只要你点击一下按钮,整个WordPress就变成全新的了,只要10秒钟!多么棒的用户体验!
但在方便的同时,对代码的修改会全部丢失,如果想保留你的修改,只有把改动做成可重用的主题或者插件。这是我见过最聪明的决定,一石三鸟:
提供了NB的用户体验;
锁定了核心代码,不允许修改;
扩展功能被封装成插件,刺激了生态系统的增长。
我把这个方式直接应用到了上,短短一个月贡献出来的插件数量已经达到两位数了。
管中窥豹,我想你已经想出了更多好点子。不过正是因为这是引导,只有真正共赢的决定才会有效果,如果用户收益不够,用户会选择从这个体系中脱离出去。这正是经营开源平台最重要的地方:艺术的平衡多方的利益。
作为世界一流的开源平台,WordPress是个非常值得研究的对象,有太多可圈可点之处,这里和大家分享的只是我在TeamToy实践中验证过的一些细节,也希望更多的同学能从代码层次跳出来,从更高的层次上去理解开源和开放。
Author Contacted
语言 & 开发
231 他的粉丝
0 他的粉丝
0 他的粉丝
告诉我们您的想法
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
赞助商链接
InfoQ每周精要
订阅InfoQ每周精要,加入拥有25万多名资深开发者的庞大技术社区。
架构 & 设计
文化 & 方法
InfoQ.com及所有内容,版权所有 ©
C4Media Inc. InfoQ.com 服务器由 提供, 我们最信赖的ISP伙伴。
极客邦控股(北京)有限公司
找回密码....
InfoQ账号使用的E-mail
关注你最喜爱的话题和作者
快速浏览网站内你所感兴趣话题的精选内容。
内容自由定制
选择想要阅读的主题和喜爱的作者定制自己的新闻源。
设置通知机制以获取内容更新对您而言是否重要
注意:如果要修改您的邮箱,我们将会发送确认邮件到您原来的邮箱。
使用现有的公司名称
修改公司名称为:
公司性质:
使用现有的公司性质
修改公司性质为:
使用现有的公司规模
修改公司规模为:
使用现在的国家
使用现在的省份
Subscribe to our newsletter?
Subscribe to our industry email notices?
我们发现您在使用ad blocker。
我们理解您使用ad blocker的初衷,但为了保证InfoQ能够继续以免费方式为您服务,我们需要您的支持。InfoQ绝不会在未经您许可的情况下将您的数据提供给第三方。我们仅将其用于向读者发送相关广告内容。请您将InfoQ添加至白名单,感谢您的理解与支持。WordPress 角色和权限终极指南
WordPress 角色和权限终极指南
WordPress 角色和权限终极指南
文章目录[隐藏]
WordPress 在 2.0 版本中引入了(Roles and Capabilities)系统,以前的(User Levels)已经被弃用。但是还是有很多插件和主题仍然使用用户级别的方法来控制用户查看设置页面和其他功能。所以这篇指南将详细介绍 WordPress 的角色和权限系统,最终将让你在你的插件和主题中能够正确使用。
什么是角色和权限?
和其他 CMS 或者 Web 程序一样,WordPress 也有一个内置的系统来验证一个特定的用户是否有足够的权限来进行某种动作。WordPress 这个内置的系统就是角色和权限系统,它首先将用户分为角色(Role),然后给每个角色都分配一定的权限。
下面是 WordPress 默认的用户角色:
管理员 -拥有所有的管理权限
编辑 -发表文章,编辑文章,以及编辑其他人的文章,等等。
作者-发布和编辑自己的文章
投稿者 -撰写和编辑自己的文章,但不能发布
订阅者 -查看评论/添加评论/查看文章,等等。
WordPress 的角色和权限系统比用户等级的方法灵活得多,它支持对现有用户角色添加,删除和重新分配权限,甚至还可以添加更多的用户角色,并且不破坏系统原有内置的用户角色。
用户权限和后台菜单
很多插件都都会在 WordPress 后台添加一个管理页面,让用户自定义插件选项,一般我们可以通过下面的函数实现:
// 添加主菜单
add_menu_page(page_title, menu_title, capability, handle, [function], [icon_url]);
// 添加子菜单
add_submenu_page(parent, page_title, menu_title, capability, file/handle, [function]);
//添加选项菜单子菜单
add_options_page(page_title, menu_title, capability, handle, [function]);
//添加工具菜单子菜单
add_management_page(page_title, menu_title, capability, handle, [function]);
//添加页面菜单子菜单
add_pages_page( page_title, menu_title, capability, handle, [function]);
//添加文章菜单子菜单
add_posts_page( page_title, menu_title, capability, handle, [function]);
//添加主题菜单子菜单
add_theme_page( page_title, menu_title, capability, handle, [function]);
我们很容易发现,这些函数都会有个参数:capability,这个参数就是用来指定用户看到该菜单所需要的权限。一般它的值是一个代表某种权限的字符串,比如:edit_posts。所以使用这些额函数在 WordPress 后台中添加的菜单以及与这些菜单相关联的页面,是只有拥有指定的权限的用户才可以看到和访问的。
如果你的主题或者插件有设置页面,应该正确的控制哪些用户有权限可以访问这些页面,比如,添加的是一个主题选项页面,就应该使用 edit_themes 权限,而添加的是一个插件选项页面的话,使用的应该是 edit_plugins 权限,当然也可以直接 manage_options 权限来控制访问插件和主题选项页面。
许多插件仍然使用用户等级系统(用从0到10的数字代表用户的权限),但是 WordPress 已经废弃了等级系统,不应该再被使用。所以使用权限系统,就不必去担心 WordPress 不再支持用户等级系统,并且如果想添加和使用自定义的权限,也只能使用权限系统。
检查用户的权限
如果使用的插件或主题允许用户更改博客的数据(添加新的内容或编辑现有的内容等),那么我们就要检测当前用户是否有足够的权限来执行这些动作,这个时候我们可以使用
这个函数:
if ( current_user_can( $capability ) ) {
//如果用户拥有 $capability 的权限时执行的动作。
此函数也可以接受一个可选的参数:postID,用来检查当前用户是否有权限对特定文章进行某种操作:
// 检测用户对 ID 为 $post_ID 的日志是否有编辑的权限
current_user_can( 'edit_post', $post_id );
还有另外一个函数:,可以用来检查某个文章的作者是否具有一定的权限:
if ( author_can( $post, $capability ) ) {
// 如果文章 $post 的作者拥有 $capability 时执行的动作
函数 author_can 第一个参数可以是一个 $post 对象,或一个 Post ID。
添加自定义用户角色
有时需要为插件添加新的用户角色,比方说,我们要编写一个新的相册插件,用户可以注册并上传照片到网站,但是我们不希望这些注册用户可以添加或修改网站上任何其他类型的内容(如文章或页面)。为了做到这一点,最好的办法就是添加一个新的自定义用户角色:
添加自定义用户角色用到的函数是:,它会添加含有一组权限的一个新的用户角色,这里我添加一个叫做 ‘photo_uploader’ 的用户角色,它显示的名字是:’Photo Uploader’,它默认的权限是:’organize_gallery’:
add_role( 'photo_uploader', 'Photo Uploader', array( 'organize_gallery' ) );
创建好用户角色之后,当一个用户创建,编辑或上传相册的时候,我们就可以使用 current_user_can( 'organize_gallery' ) 来检查当前用户是否有权限了。
并且被赋予了这个角色的用户只可以 organize_gallery ,但不能 edit_posts 或 publish_posts,所以我们无需担心他会修改网站其他内容了。
要删除一个角色,使用
函数,比如当用户决定卸载插件时,就应该有一个选项让插件的用户可以删除这些自定义角色:
remove_role( 'photo_uploader' );
添加自定义用户权限
如果我们想为现有用户添加权限该怎么办呢?继续我们的相册插件的例子,我们想让作者也有上传图片的权限,我们可以使用
//获取 &author& 的角色对象
$role = get_role( 'author' );
//为角色对象添加 &organize_gallery& 权限
$role-&add_cap( 'organize_gallery' );
WordPress的权限类
我们已经讨论过了检查和添加权限,以及添加角色,这是管理 WordPress 用户权限最常用的函数。然而,正如这篇文章的标题包含“终极”二字一样,我们会介绍WordPress 用于角色和权限幕后工作的三个类,以及这些类提供的接口,我们可以在插件中进行高级权限管理。这三个类是:
这三个类的源代码可以在 wp-includes/capabilities.php 中找到,源代码注释写得很详细,下面总结一下怎样使用这些类:
WP_Roles 类
WP_Roles 是一般的角色管理类,当我们在插件中使用的时候,可以不用实例化一个新的对象,而是直接使用 WordPress 默认创建的一个全局对象 $wp_roles,可以在任何地方使用它,只要事先声明 global 即可:
global $wp_
我们上面使用的函数 add_role() 和 remove_role() 实际上是 $wp_roles-&add_role() 和 $wp_roles-&remove_role() 的别名。因此,我们也可以直接使用 $wp_roles 对象添加和删除角色,例如:
global $wp_
//添加新角色,和add_role()功能一样
$wp_roles-&add_role( $role, $display_name, $capabilities )
//删除角色, 和remove_role()功能一样
$wp_roles-&;remove_role( $role );
同样也可以使用这种方法得到一个角色:
global $wp_
//通过角色名称得到一个角色,和get_role()功能一样
$wp_roles-&get_role( $role );
还可以得到一个可用角色列表,含有角色的名称和角色的显示名称。这个对想为用户提供一个接口,改变权限分配时候非常有用的。
global $wp_
//得到一个值列表包括 $role_name =& $display_name
$roles = $wp_roles-&get_names();
最后可以使用 $wp_roles 添加和删除权限,此对象几乎包括所有的角色和权限操作。
global $wp_
//为角色$role添加权限$cap
$wp_roles-&add_cap( $role, $cap );
//为角色$role删除权限$cap
$wp_roles-&remove_cap( $role, $cap );
$wp_roles-&add_cap( 'administrator', 'manage_galleries' );
$wp_roles-&remove_cap( 'subscriber', 'view_galleries' );
WP_Role 类
这是一个非常简单的类,它的功能就是添加和删除权限。
//得到角色对象
$role_object = get_role( $role_name );
//为角色对象添加权限$cap
$role_object-&add_cap( $capability_name );
//为角色对象删除权限$cap
$role_object-&remove_cap( $capability_name );
这个类可以管理每个用户的角色和权限,这意味着可以为一个特定具体的用户分配多个角色,或者为当前用户添加特定的权限,不论他目前是什么角色。
首先需要获取用户对象来操纵它的角色和权限:
//通过用户ID得到用户对象
$user = new WP_User( $id );
//或者通过用户名
$user = new WP_User( null, $name );
我们可以通过用户ID或用户名得到一个用户对象。对于第二种方法,第一个参数必须是空的(null或空字符串),如:
//通过ID得到管理员对象
$admin = new WP_User( 1 );
//通过用户名得到管理员对象
$admin = new WP_User( null, 'admin' );
一旦得到了用户对象,就可以为这个用户的添加另一个角色,而无需修改他目前的角色,这意味着用户可以有多个角色:
$user-&add_role( $role_name );
也可以使用 remove_role(),来为该用户删除某个角色:
$user-&remove_role( $role_name );
还可以为该用户设置一个角色,这意味着该用户将被删除当前所有的角色,并分配一个新的角色:
$user-&set_role( $role_name );
对于权限操作,也有很多的方法来做各种事情:
//检查该用户是否具有某种权限或角色名称
if ( $user-&has_cap( $cap_name ) ) {
//做一些事
//为用户添加权限
$user-&add_cap( $cap_name );
//为用户删除权限
$user-&remove_cap( $cap_name );
//删除用户所有权限
$user-&remove_all_caps();
WordPress 角色和权限总结
以上就是所有有关 WordPress 角色和权限的知识,WordPress 强大的用户角色和权限管理系统可以让我们随时创建复杂的项目。
最后如果你在使用上有什问题,请给我留言。
&我爱水煮鱼,本站使用的主机是:,国外主机建议使用。
如有什么问题,请扫描下面二维码到小密圈咨询:
你可能也喜欢
& Copyright 2018
Icons by .
Powered by .
Hosting by .为什么那么多人用WordPress做网站:关于WordPress的一些事实 _WordPress 智库
本站长期承接 WordPress 主题、插件、基于 WooCommerce 的商店商城开发业务。 我们有 8 年 WordPress 开发经验,如果你想 , 请联系 QQ: ,或邮箱:
最受欢迎的文章
评分 4.41, 满分 5 星109 票
评分 4.32, 满分 5 星77 票
评分 4.52, 满分 5 星54 票
评分 4.09, 满分 5 星47 票
评分 4.20, 满分 5 星41 票

我要回帖

更多关于 wordpress上不了 的文章

 

随机推荐