S’il y a un élément où WordPress peut-être amélioré, c’est la gestion collaborative de son outil. Et c’est toujours aussi vrai malgré les améliorations apportées par la toute dernière version WordPress 3.3.

L’un des problèmes de WP, c’est que n’importe quel utilisateur peut voir tous les articles des autres, au lieu de ne voir que les siens. Heureusement, une simple fonction peut corriger ce problème.

Pourquoi afficher les contenus de tout le monde ?

Cela m’avait déjà choqué auparavant : pourquoi peut-on voir tous les articles des autres utilisateurs ? Cela n’a aucun intérêt.

Quand on est référenceur, cela permet juste en s’inscrivant de trouver des dizaines de sujets d’articles à créer. En d’autres termes, le fait que WordPress affiche la liste complète des articles des autres utilisateurs n’a pas vraiment d’intérêt, et peut même nuire à celui qui gère un site multi-utilisateur. Je pense notamment à ceux qui utilisent le CMS pour gérer un annuaire, un site de communiqués de presse ou de digglike.

WordPress affiche les articles de tous les utilisateurs
WordPress affiche les articles de tous les utilisateurs

Affichez uniquement les articles de l’utilisateur

Comme l’un de vous vient de me demander comment corriger ce problème, je me suis penché sur la question.

La solution a été donnée par Mark/t31os sur le site officiel de WordPress, et rien n’est plus simple à faire. Utilisez tout simplement le fichier functions.php de votre thème WordPress pour y ajouter ce code.

Code mis à jour le 02/04/2013 (code inital par Daniel Roch puis amélioré par Geekpress et Daniel Roch) :

  /**
    Ne montrer que ses posts à l'utilisateur
    *   
    */
  if ( is_admin()) {
  function seomix_adm_user_show_myposts($query) {
    global $user_level;
    if ($user_level < 5){
      global $user_ID;
      $query->set('author',$user_ID);
      unset($user_ID);
      $screen = get_current_screen();
      add_filter('views_'.$screen->id, 'seomix_adm_user_remove_post_counts');}
    return $query;}

  function seomix_adm_user_remove_post_counts($views) {
    $views = array_intersect_key($views, array_flip(array('mine','trash')));
    return $views;}
  add_filter('pre_get_posts', 'seomix_adm_user_show_myposts');
  }

Et voilà : désormais, les utilisateurs de votre blog WordPress ne verront que leurs articles, et pas ceux des autres.

Un auteur ou contributeur ne verra que ses articles WordPress
Un auteur ou contributeur ne verra que ses articles

Les utilisateurs administrateurs et éditeurs verront toujours la liste compète des contenus, tandis que les auteurs et contributeurs de votre blog WordPress ne verront que les leurs.

Source : WordPress.org