web-dev-qa-db-fra.com

Restreindre l'accès à la corbeille dans les publications

Je souhaite empêcher les utilisateurs de supprimer définitivement des publications. Comment restreindre l'accès au dossier Corbeille dans les publications? C’est la seule page où les utilisateurs peuvent supprimer leurs messages de manière permanente .

Les seules solutions que j'ai à ce jour sont:

1) Ajouter ceci à la feuille de style:

li.trash {
    display: none;
}

Mais vous et moi savons tous deux qu’il s’agit d’une correction factice et, plus important encore, elle ne cache que le lien qui mène au dossier Corbeille pour tous les utilisateurs .

2) Supprimez la capacité delete_posts pour aucun éditeur. Le problème, c’est que les utilisateurs ne pourront pas déplacer leurs publications dans la corbeille (fonctionnalité essentielle pour ma plate-forme).

Connaissez-vous une meilleure solution?

1
Amanda Duke

Avec le filtre, nous empêchons le lien Trash d'être imprimé.
Et avec l'action, redirigez la page vers la liste de publication si l'utilisateur tente d'accéder directement à l'URL (/wp-admin/edit.php?post_status=trash&post_type=post).

add_filter( 'views_edit-post', 'wpse_74488_remove_trash_link' );
add_action( 'admin_head-edit.php', 'wpse_74488_block_trash_access' );

function wpse_74488_remove_trash_link( $views ) 
{
    if( !current_user_can( 'delete_plugins' ) )
        unset( $views['trash'] );

    return $views;
}

function wpse_74488_block_trash_access()
{
    global $current_screen;

    if( 
        'post' != $current_screen->post_type 
        || 'trash' != $_GET['post_status'] 
    )
        return;

    if( !current_user_can( 'delete_plugins' ) )
    {
        wp_redirect( admin_url() . 'edit.php' ); 
        exit;
    }
}
2
brasofilo