web-dev-qa-db-fra.com

Personnaliser l'écran des utilisateurs administrateurs en fonction du rôle

J'ai ajouté un rôle de "Client" et je travaille actuellement à la personnalisation de l'écran Utilisateurs pour ce rôle. Ce que j'aimerais faire, c'est personnaliser les colonnes en fonction de ce rôle particulier.

Remarque:

Par exemple, regardez la capture d'écran. Comment pourrais-je supprimer la référence à la colonne posts pour uniquement le rôle de client?

Example of current "Customer" screen

2
Jonathan Wold

Merci à Mike23 pour le tuyau. Voici le code que j'utilise pour ajouter une colonne à uniquement le rôle "client":

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;    
        }
}
}

Toutes les idées ou suggestions d'amélioration sont les bienvenues.

1
Jonathan Wold

Gérer les colonnes

C'est assez simple en utilisant le filtre manage_{post-type-name}_columns: Changez simplement de $capability et supprimez ce dont vous n'avez pas besoin dans le tableau $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' );

Ajouter une colonne

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);
1
kaiser

Regardez current_user_can . Avec cela, vous pouvez filtrer votre code par rôles, puis faire ce que vous voulez pour personnaliser l'interface.

Rapide et sale, avec CSS. Mettez ceci dans votre functions.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');
0
mike23