不同的管理主题-基于角色?

时间:2016-09-02 作者:Daniel

我想知道如何根据用户的角色更改管理主题。目前,我可以使用插件更改管理主题(例如:Blue Admin) - 但我不知道如何根据角色(订阅者等)进行这些更改。

还希望仅为某些角色显示特定的菜单项/etc。

我可以潜入functions.php 或者其他任何可能需要完成的事情——只是希望首先指向正确的方向。

2 个回复
SO网友:Charles

您可以通过函数设置特定的管理员配色方案pro用户角色
就我个人而言,我首先会取消从概要文件中选择方案的选项。php(后端用户/您的个人资料)

下面只是一个示例函数,它确实为特定的用户角色设置了特定的颜色方案
请先备份功能。添加此函数之前

/**
 * Set Admin Color Scheme by Role
 * Codex:   {@link https://codex.wordpress.org/Roles_and_Capabilities}
 *          {@link https://codex.wordpress.org/Function_Reference/wp_get_current_user}
 * @version WordPress 4.6 
 */
add_filter( \'get_user_option_admin_color\', \'wpse_238039_set_admin_color\' );
function wpse_238039_set_admin_color()
{
    $current_user = wp_get_current_user();

    // Check for the user role
    if ( user_can( $current_user, \'subscriber\' ) )
    {
        // Remove the Admin Color Scheme picker
        remove_action( \'admin_color_scheme_picker\', \'admin_color_scheme_picker\' );

        // Set the Admin Color Scheme you want for this role
        return \'light\';
    }

    if ( user_can( $current_user, \'contributor\' ) )
    {
        remove_action( \'admin_color_scheme_picker\', \'admin_color_scheme_picker\' );
        return \'coffee\';
    }

} // end function
当然,通过从函数中删除这些行,可以在用户配置文件页面上保留Admin Color Scheme选项。

还希望仅为某些角色显示特定的菜单项/etc。

可以使用相同类型的IF语句块在另一个函数中添加/删除项。只需了解您在特定功能中的操作/需要,并使用正确的hooks

Note: 请参见上述函数中的@链接URL以获取参考。

SO网友:Jeremy Ross

管理配色方案存储在user_metaadmin_color (默认值为“刷新”)。

您可以编写一个在user_registration 这将根据角色进行设置。

add_action( \'user_register\', \'wpse_registration_save\', 10, 1 );

function wpse_registration_save( $user_id ) {
   # ...get the user role
   # ...write switch statement based on role
   # ... update_user_meta($user_id, \'admin_color\', \'funky\');

}
我不确定Blue Admin是如何做到这一点的,但这将是一种不用任何插件就能做到这一点的方法。如果它很聪明,Blue Admin会将其主题信息存储在user_meta, 也是这样,所以无论哪种方式,它都可能是一种非常相似的方法。

相关推荐

WP-ADMIN:“对不起,您不能访问此页面。”

两周后不使用我们的WP站点,登录/wp-admin/ 出现白屏错误:抱歉,不允许您访问此页面。我有:重命名plugins 到plugins.temp.通过phpMyAdmin创建了一个新的管理员用户。新用户已user_meta 的作用a:1:{s:13:"administrator";s:1:"1";}.</已重命名themes 到themes.temp.</删除核心WordPress文件,并替换为新上载的文件</已替换.htaccess 使用默认