Upload
gregory-cornelius
View
922
Download
0
Tags:
Embed Size (px)
DESCRIPTION
WordPress includes a well-defined workflow for running a blog with multiple contributors in various roles. It works great; But what if you are using WordPress to run a 1,000 page hierarchical site? Well… the workflows available are a bit limited without getting under the hood. For example, WordPress does not define fine-grained capabilities for controlling who can edit published content. As a result, users have to be granted full editing permissions, which increases the chance that a less-experienced user will make an ill-advised change. Drawing from our experience running large Multisite installations, Boston University has developed a couple of plugins to address some of the limitations. And for the first time, we are planning to release our plugins to the broader WordPress community under the GPL. This talk will include an overview of the role/capability system presented from both a user and developer perspective as well as overviews of the BU Versions and BU Section Editing plugins. Along the way, various insights will be shared that provide a window into how BU has built an effective content management system on top of WordPress.
Citation preview
WordPress Workflows+ Expanded
2007 20122008 2009 2010 2011
141 sites
342 sites
581 sites
136 sites0 sites
700 sites
2007 20122008 2009 2010 2011
Total:
+ 255 In-progress+ 2,596 Blogs= 3,551 Sites
A range of offerings:
1. Fully custom2. Quick setup3. DIY tools
Main Third-PartyGravity Forms
WP SuperCache
Akismet
Networks for WordPress
Yet Another RelatedPosts Plugin
Main BU-specificBU Navigation
Access Control List (w/ Single Sign-on)
User Management (w/ Single Sign-on)
Content Banner
Post Details
Advanced Tiny MCE
Site Manager
....
Integratedw/ BU apps BU Calendar
BU Maps
Google Search Appliance
Course Feeds
Training Manager
Emergency Alert
How many plugins does it take?
Lack of vision
Lack of consistency
Lack of clear accountability
Team dynamics and skill
Search
Performance & Scaling
Complex workflows
Politics
What makes large sites so di#icult?
Lack of vision
Lack of consistency
Lack of clear accountability
Team dynamics and skill
Search
Performance & Scaling
Complex workflows
Politics
What makes large sites so di#icult?
BU Versions+ BU Section Editing
Design Goals»+ Blend naturally into the existing WordPress
admin UI+ Simple to use+ Manage permissions with a full view of all post
content+ Perform well on sites with more than 2,000
pages+ Support custom post types
BU Versions!
Jane Doe,Contributor
John Smith, administrator
page created
page
published
page cloned
alternate
overwrites
original
alternate
edited
The history of a page
Roadmap»+ Compare changes with original+ Support cloning of meta data and the meta boxes
used to manage the data+ Simple notifications+ Support custom statuses+ Preview all alternate versions as once (tricky)
BU Section Editing!
John Smith, administrator
Jane Doe,Contributor
+ BU Versionshttps://github.com/bu-ist/bu-versions+ BU Section Editinghttps://github.com/bu-ist/bu-section-editing
Now accepting pull requests...
Contributors:
+ Mike Burns, developer+ Sam Roach, UX designer+ Scott Dasse, designer+ Mike Waecker, project manager+ Alex Haas, quality assurance analyst
Related Plugins:
+ Members+ Edit Flow (Automattic)+ ICE (NYTimes)
Roles +Capabilities
Default Roles»+ Administrator - Somebody who has access to all
the administration features+ Editor - Somebody who can publish and manage
posts and pages as well as manage other users' posts, etc.
+ Author - Somebody who can publish and manage their own posts
+ Contributor - Somebody who can write and manage their posts but not publish them
+ Subscriber - Somebody who can only manage their profile
WordPress Permissions:
1. Primitive Capabilities2. Meta Capabilities
Roles +Capabilities
AdministratorPrimitiveCapabilities readedit_postsedit_others_postsedit_published_postsedit_private_postsdelete_postsdelete_others_postsdelete_published_postsdelete_private_postsread_private_postspublish_posts
edit_pagesedit_others_pagesedit_published_pagespublish_pagesdelete_pagesdelete_others_pagesdelete_published_pagesdelete_private_pagesedit_private_pagesread_private_pages
unfiltered_html
edit_theme_optionsdelete_themesswitch_themesedit_themesupdate_themesinstall_themes
activate_pluginsedit_pluginsupdate_pluginsdelete_pluginsinstall_plugins
edit_dashboardmanage_optionsmoderate_commentsmanage_categoriesmanage_links
edit_filesupload_filesunfiltered_uploadimportexportupdate_core
delete_userscreate_usersedit_userslist_usersremove_usersadd_userspromote_users
Roles +Capabilities
AdministratorPrimitiveCapabilities readedit_postsedit_others_postsedit_published_postsedit_private_postsdelete_postsdelete_others_postsdelete_published_postsdelete_private_postsread_private_postspublish_posts
edit_pagesedit_others_pagesedit_published_pagespublish_pagesdelete_pagesdelete_others_pagesdelete_published_pagesdelete_private_pagesedit_private_pagesread_private_pages
unfiltered_html
edit_theme_optionsdelete_themesswitch_themesedit_themesupdate_themesinstall_themes
activate_pluginsedit_pluginsupdate_pluginsdelete_pluginsinstall_plugins
edit_dashboardmanage_optionsmoderate_commentsmanage_categoriesmanage_links
edit_filesupload_filesunfiltered_uploadimportexportupdate_core
delete_userscreate_usersedit_userslist_usersremove_usersadd_userspromote_users
Roles +Capabilities
current_user_can('edit_post', 10)
map_meta_cap()
has_cap('edit_published_posts')
Roles +Capabilities
current_user_can('edit_post', 10)
map_meta_cap()
has_cap('edit_published_in_section')
BU Section Editingmap_meta_cap() filter
Roles +Capabilities
current_user_can('publish_posts')
map_meta_cap()
has_cap('published_posts')
Roles +Capabilities
Uh, Oh!No 'publish_post' Meta Capability
Roles +Capabilities
hack...hack...find a work-‐around...submit WordPress core trac ticket...write unit tests...submit a patch...
Roles +Capabilities
Limitations»+ Capabilities are not stored separate from roles+ Capabilities do not have labels or descriptions
Roles +Capabilities
Roles +Capabilities
Limitations»+ Capabilities are not stored separate from roles+ Capabilities do not have labels or descriptions
+ No API exists for setting a capability to false; remove_cap() deletes the capabilities making it di#icult to determine whether a capability was removed or just was never added
Roles +Capabilities
core developer developer community
The value of open source
"The foundation of open source projects is rough consensus and working code"
—Jacob Kaplan-Moss
Resources»+ http://make.wordpress.org+ http://core.trac.wordpress.org+ freenode.net #wordpress-dev+ [email protected]
Up next» + infrastructurerevamp+ responsive+ open source
Gregory Cornelius
(by)
@gcorne
design by Scott Dasse