WordPress Workflows Expanded

Preview:

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

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+ wp-hackers@lists.automattic.com

Up next» + infrastructurerevamp+ responsive+ open source

Gregory Cornelius

(by)

@gcorne

design by Scott Dasse