Je souhaite masquer le bouton Ajouter une nouvelle page aux utilisateurs qui ne sont pas administrateurs. J'ai réussi à cacher l'élément de sous-menu de la colonne de droite comme ceci:
$page = remove_submenu_page( 'edit.php?post_type=page', 'post-new.php?post_type=page' );
J'ai essayé de cacher le bouton dans la page avec CSS proposé dans cette question mais n'a pas fonctionné. Comment je peux y arriver? Voici ma tentative infructueuse:
if (isset($_GET['post_type']) && $_GET['post_type'] == 'page') {
echo '<style type="text/css">
#favorite-actions, .add-new-h2, .tablenav { display:none; }
</style>';
}
Ceci peut être réalisé assez facilement avec juste CSS. Premièrement, nous allons ajouter une fonction qui générera une classe sur la balise body en fonction du rôle de l'utilisateur. Ensuite, nous mettrons en file d'attente une feuille de style à afficher dans l'admin. Utilisez ensuite la classe dans le corps pour cibler et masquer le bouton.
Ajouter une classe de corps en fonction du rôle d'utilisateur - Ajouter au fichier functions.php
function custom_role_admin_body_class( $classes ) {
global $current_user;
foreach( $current_user->roles as $role )
$classes .= ' role-' . $role;
return trim( $classes );
}
add_filter( 'admin_body_class', 'custom_role_admin_body_class' );
Styles d'administration en file d'attente - Ajouter au fichier functions.php
function custom_admin_styles(){
wp_enqueue_style(
'admin_css',
get_stylesheet_directory_uri() . '/css/admin-styles.css', array(), filemtime( get_stylesheet_directory() . '/css/admin-styles.css')
);
}
add_action('admin_enqueue_scripts', 'custom_admin_styles');
Utiliser la classe de corps pour masquer le bouton pour les utilisateurs non administrateurs
body.edit-php.post-type-page:not(.role-administrator) .page-title-action {
display: none;
}
installez User Role Editor
ce plugin qui vous donnera la possibilité de masquer les options par rôles d'utilisateur et laissez-moi savoir que cela fonctionne ou non, ainsi je peux donner une autre option pour le faire.