Sitting down to work on this idea and the architecture brings up a few questions…I’ve never thought about using the library this way so I thought you might be able to provide some insight.
The default WordPress roles are hierarchal. Each one progressively adds additional capabilities on the site while keeping all the capabilities of “lower” roles. The Members plugin lets you add additional roles and assign those roles a custom set of capabilities allowing you to create non-hierarchal progressions…ie a role that can add users but not post.
You propose to create a number of new roles that would all have the basic WordPress capabilities. In effect they will all be the same as the default WordPress role “subscriber”. Your goal in the new roles is not really related to WordPress features but rather content access. This makes a lot of sense to me but the lack of hierarchy is challenging.
Let’s say to create the following roles:
Freshman
Sophomore
Junior
Senior
Normally if you assigned content to be visible to the Sophomore role I would expect Juniors and Seniors to have access as well based on WordPress’ hierarchal model. But, in this case it would only be visible to the Sophomore role because the Junior and Senior role are not really higher than Sophomore…they are just different.
To solve this in a content delivery/restriction model like you are proposing for the iCafe Library we could deal with this two ways.
Method one:
Content can be assigned to multiple roles. At the content level you would be presented with a list of all the roles you have created and you simply check all that have access.
Method two:
Content can only be assigned to one role. You would need to create more roles this way (Freshman, Sophomore, Freshman_Sophomore, etc)…I think management would be difficult this way.
My goal is that when someone “graduates” from Sophomore to Junior they don’t lose access to all the Sophomore content. I personally think method one is the way to go…
My last question…I’m assuming it’s at the “book” level that you would be granting access…not the chapter or section level…
Thanks for your input,
Chris