web-dev-qa-db-fra.com

Comment empêcher les éditeurs de voir/éditer des pages créées par admin?

Dans le backend, comment puis-je empêcher les éditeurs (utilisateur avec le rôle d'éditeur) de voir/éditer des pages créées par admin (et/ou par le rôle d'administrateur)?

Je sais que le rôle d’éditeur dans WordPress a la fonctionnalité "edit_others_pages", mais j’ai besoin d’une fonction pour une fonctionnalité personnalisée telle que: "edit_others_pages_except_admin" :)

Je ne veux pas utiliser un plugin énorme/compliqué juste pour ça!

Merci! J'ai cherché une solution plus de 1h: D

1
Nicusor Dumbrava

Ce code fera le travail ...

<?php
add_action('pre_get_posts', 'filter_posts_list');
function filter_posts_list($query)
{
    //$pagenow holds the name of the current page being viewed, we want to run our code only on edit.php (posts list)
    global $pagenow;

    //If the 'Editor' is logged in, exclude 'Admin's posts
    if(current_user_can('editor') && ('edit.php' == $pagenow))
    {
        //global $query's set() method for excluding admin's posts
        $query->set('author', '-1');
    }
}

Pour une explication détaillée , lisez ici .

2
Rutwick Gangurde