[wp-hackers] User Capabilities
Ryan Boren
ryan at boren.nu
Fri Jul 1 15:08:17 GMT 2005
On Thu, 2005-06-30 at 23:41 -0700, Rob Lanphier wrote:
> Very cool! As far as the backwards compatibility mechanism goes, I was
> thinking it might be smart to map things the other direction as well,
> creating capabilities with names like "level1", "level2", etc, so that
> chunks of code like this:
>
> if ($user_level >= 6)
>
> ...can be replaced with this in a semi-automated fashion:
>
> if ($current_user_can('level6')
>
> ...or keeping with the natural language feel of things:
> current_user_can('dolevel6stuff')
>
> ...and then, of course, give level 6 users the "level1" through "level6"
> capabilities.
Yeah, we'll need stuff like this for backwards compat. One specific
instance is plugins adding new admin menus. They currently specify a
user level. They need to specify capabilities instead. To illustrate,
here's how the theme menu is currently constructed in menu.php.
$submenu['themes.php'][5] = array(__('Themes'), 8, 'themes.php');
$submenu['themes.php'][10] = array(__('Theme Editor'), 8,
'theme-editor.php');
In the capability model, this becomes:
$submenu['themes.php'][5] = array(__('Themes'), 'switch_themes',
'themes.php');
$submenu['themes.php'][10] = array(__('Theme Editor'), 'edit_themes',
'theme-editor.php');
A capability is used instead of a user level when creating menus.
Plugins too need to be updated to create menus with capabilities instead
of user levels. However, there are a lot of plugins out there and we
need to be backwards compatible with them. So, as you suggest, user
level 10 becomes a 'level10' capability, level 5 becomes 'level5', and
so on. Roles will be assigned the 'level*' caps they need to be
compatible with old plugins.
Ryan
More information about the wp-hackers
mailing list