根据角色自定义管理员用户屏幕

时间:2011-06-07 作者:Jonathan Wold

我添加了一个角色“Customer”,我正在为该角色定制用户屏幕。我想做的是根据特定角色自定义列。

Note:

例如,查看屏幕截图。如何删除仅针对客户角色的posts列的引用?

Example of current "Customer" screen

3 个回复
最合适的回答,由SO网友:Jonathan Wold 整理而成

感谢Mike23的提示。下面是我用来向“客户”角色添加列的代码:

if( $_GET[\'role\'] == "customer" ) { 

add_filter(\'manage_users_columns\', \'add_ecommerce_column\');
add_filter(\'manage_users_custom_column\', \'manage_ecommerce_column\', 10, 3);


function add_ecommerce_column($columns) {
        $columns[\'ecommerce\'] = \'Ecommerce\';
    return $columns;

}

function manage_ecommerce_column($empty=\'\', $column_name, $id) {
    if( $column_name == \'ecommerce\' ) {
        return $column_name.$id;    
        }
}
}
欢迎提出任何改进意见或建议。

SO网友:kaiser

管理列

使用manage_{post-type-name}_columns 过滤器:仅根据切换$capability$post_columns 大堆

function wpse19435_manage_columns( $posts_columns )
{
    // First role: add a column - take a look at the second function
    if ( current_user_can( $capability_admin ) )
    {
        $posts_columns[\'some_column_name\'] = _x( \'Whatever\', \'column name\' );
    }
    // second role: remove a column
    elseif ( current_user_can( $capability_other_role ) )
    {
        unset( $posts_columns[\'comments\'] );
    }
    // default
    else
    {
        // do stuff for all other roles
    }

    return $posts_columns;
}
add_filter( \'manage_{post-type-name}_columns\', \'wpse19435_manage_columns\' );

Add a column

function wpse19435_manage_single_column( $column_name, $id ) 
{
    switch( $column_name ) 
    {
        case \'some_column_name\' :
            // do stuff
            break;

        default :
            // do stuff
            break;
    }

}
add_action(\'manage_{post-type-name}_custom_column\', \'wpse19435_manage_single_column\', 10, 2);

SO网友:mike23

看看current_user_can. 有了它,您可以按角色过滤代码,然后做任何您想自定义接口的事情。

快速和肮脏,与CSS。把这个放在你的函数中。php:

function add_custom_admin_styles() {
    /* Customers */
    if(current_user_can(\'customer\')){
        echo \'
        <style type="text/css">
            .column-posts{display:none!important;}  
        </style>\';
    }
}
add_action(\'admin_head\', \'add_custom_admin_styles\');

结束

相关推荐

wp-admin slow in multisite

使用子域多站点运行Wordpress 3.1.2(最新更新,大约一年前作为3.0安装);使用Sunrise域映射插件。前端速度很快,后端(wp admin)在网络管理站点(www.example.com/wp admin)上速度很慢,但在其中一个子域后端(foo.example.com/wp admin)上以“正常速度”运行。服务器是我们自己的,Ubuntu 10.04带有mod\\u安全性(我听说它可以减慢速度)。我能做些什么来加速后端或以某种方式运行跟踪吗?