web-dev-qa-db-fra.com

définir les options d'écran spécifiques au rôle dans la page de résumé de publication

Je dois définir différentes options d'écran (titre, auteur, catégories ...) dans la page de résumé de publication pour les utilisateurs non administrateurs (éditeur, auteur ..) qui ne peuvent pas être modifiées par l'utilisateur.

Exemple : enter image description here

Ceci est la vue administrateur et je dois masquer les colonnes View Count & SEO pour les utilisateurs non administrateurs.

Quelqu'un a-t-il une idée, comment y parvenir?

2
Janith Chinthana

Je suppose que vous avez besoin de quelque chose comme quoi les éditeurs ne peuvent pas voir la colonne de catégorie ou quelque chose comme ça.

Cet extrait pourrait vous aider:

/** Remove "Options"-Panel, when User is not admin **/
add_filter( 'manage_posts_columns', 'change_columns_for_user', 10, 2 );
function change_columns_for_user( $columns, $post_type ){
    if( 'post' != $post_type )
        return $columns;

    if( current_user_can( 'manage_options' ) )
        return $columns;
    else{
        //Remove Categories
        unset( $columns['categories'] );
        //Remove Tags
        unset( $columns['tags'] );
        //Remove Comments
        unset( $columns['comments'] );
        return $columns;
    }

}

Dans cet extrait, nous désactivons certaines colonnes si l'utilisateur ne peut pas utiliser les options managa. Vous connaissez le panneau d'options en haut: dans ce cas, ils ne s'afficheraient même plus dans ce panneau.

Mais il ne devrait pas être en mesure de changer de la connexion de l'utilisateur particulier.

Si vous souhaitez toujours désactiver le panneau d'options pour certains utilisateurs, jetez un coup d'œil à cet extrait:

/** Remove "Options"-Panel, when User is not admin **/
add_filter( 'screen_options_show_screen', 'remove_screen_settings', 10, 2 );
function remove_screen_settings( $show_screen, $class ){
    if( 'edit-post' != $class->id )
        return $show_screen;

    if( ! current_user_can( 'manage_options' ) )
        return false;
    else
        return true;
}
3
websupporter

Vous pouvez utiliser l'API de fonctionnalités pour définir de manière conditionnelle les options d'écran:

if ( current_user_can( 'manage_options' ) ) {
    // Administrator, add some options
} else {
    // Other roles, do something different
}
4
TheDeadMedic

J'ai accepté la réponse @websupporter en fonction de ma question.

Cependant, j'aimerais ajouter quelques codes à la question spécifique que j'ai rencontrée précédemment.

Je dois supprimer les colonnes supplémentaires du plug-in Yoast SEO des utilisateurs non administrateurs. Dans ce cas précis, Yoast SEO fournit le point d'ancrage pour désactiver les colonnes. Donc, je l'ai utilisé comme ci-dessous.

/** Remove SEO columns when User is not admin**/
function remove_page_analysis_for_non_admin(){
    if( current_user_can( 'manage_options' ) )
        return true;
    else{
        return false;
    }
}
add_filter( 'wpseo_use_page_analysis', 'remove_page_analysis_for_non_admin', 10, 2 );

Si quelqu'un souhaite le supprimer pour tous les utilisateurs, utilisez le code suivant

add_filter( 'wpseo_use_page_analysis', '__return_false' );
3
Janith Chinthana