Afficher uniquement les messages / médias appartenant à l'utilisateur WordPress connecté

Wordpress n'affiche que les publications et médias WordPress appartenant à l'utilisateur connecté

Comment désactiver l'affichage des publications et des médias d'autres utilisateurs de WordPress

Si vous avez déjà travaillé sur un site communautaire WordPress pris en charge par de nombreux éditeurs, vous avez peut-être remarqué que même si vous ne pouvez pas modifier les articles des autres, vous pouvez toujours afficher les titres de chaque article dans l'administrateur WordPress. 

C'est parce que, par défaut, WordPress permet aux auteurs de voir les titres de chaque article, brouillon et média publié.

Dans ce didacticiel, nous allons vous montrer comment désactiver l'affichage des publications et des médias d'autres utilisateurs.

Si vous souhaitez voir plus d'astuces que vous pouvez utiliser avec WordPress, assurez-vous de consulter certains de nos autres articles.

Table des matières[Afficher]

affichage des titres désactivé

N'oubliez pas de faire une sauvegarde WordPress (en utilisant ces plugins) avant de continuer au cas où quelque chose se casserait lors de la modification du code. 

En savoir plus sur l'utilisation WP_Query pour les types de publication personnalisés.

1. Désactiver l'affichage des publications et des médias d'autres utilisateurs de WordPress

Ajoutez le code ci-dessous à votre fichier functions.php pour désactiver l'affichage des publications et des médias d'autres utilisateurs.

add_action('pre_get_posts', 'query_set_only_author' );
function query_set_only_author( $wp_query ) {
 global $current_user;
 if( is_admin() && !current_user_can('edit_others_posts') ) {
    $wp_query->set( 'author', $current_user->ID );
    add_filter('views_edit-post', 'fix_post_counts');
    add_filter('views_upload', 'fix_media_counts');
 }
}

2. Désactiver l'affichage du nombre de publications WordPress

Comme mentionné, le code ci-dessus ne désactivera que l'affichage des titres des publications des autres dans le tableau de bord WordPress.

Le problème est qu'il ne désactivera pas l'affichage du nombre de messages dans les barres de filtre «tous les messages», «brouillons», «corbeille» et «en attente». Si vous souhaitez également corriger le nombre de publications dans les barres de filtre, ajoutez l'extrait de code ci-dessous au fichier functions.php de votre thème.

Veuillez noter que le code ci-dessous ne fonctionnera que s'il est utilisé avec le code ci-dessus.

function fix_post_counts($views) {
  global $current_user, $wp_query;
  unset($views['mine']);
  $types = array(
    array( 'status' =>  NULL ),
    array( 'status' => 'publish' ),
    array( 'status' => 'draft' ),
    array( 'status' => 'pending' ),
    array( 'status' => 'trash' )
  );
 
  foreach( $types as $type ) {
    $query = array(
      'author'   => $current_user->ID,
      'post_type'   => 'post',
      'post_status' => $type['status']
    );
   
    $result = new WP_Query($query);

    if( $type['status'] == NULL ):
     
      $class = ($wp_query->query_vars['post_status'] == NULL) ? ' class="current"' : '';
      $views['all'] = sprintf(__('<a href="/fr/%s"'. $class .'>All <span class="count">(%d)</span></a>', 'all'),
        admin_url('edit.php?post_type=post'),
        $result->found_posts);

    elseif( $type['status'] == 'publish' ):

      $class = ($wp_query->query_vars['post_status'] == 'publish') ? ' class="current"' : '';
      $views['publish'] = sprintf(__('<a href="/fr/%s"'. $class .'>Published <span class="count">(%d)</span></a>', 'publish'),
        admin_url('edit.php?post_status=publish&post_type=post'),
        $result->found_posts);

    elseif( $type['status'] == 'draft' ):

       $class = ($wp_query->query_vars['post_status'] == 'draft') ? ' class="current"' : '';
       $views['draft'] = sprintf(__('<a href="/fr/%s"'. $class .'>Draft'. ((sizeof($result->posts) > 1) ? "s" : "") .' <span class="count">(%d)</span></a>', 'draft'),
         admin_url('edit.php?post_status=draft&post_type=post'),
         $result->found_posts);

    elseif( $type['status'] == 'pending' ):

        $class = ($wp_query->query_vars['post_status'] == 'pending') ? ' class="current"' : '';
        $views['pending'] = sprintf(__('<a href="/fr/%s"'. $class .'>Pending <span class="count">(%d)</span></a>', 'pending'),
          admin_url('edit.php?post_status=pending&post_type=post'),
          $result->found_posts);

    elseif( $type['status'] == 'trash' ):

        $class = ($wp_query->query_vars['post_status'] == 'trash') ? ' class="current"' : '';
        $views['trash'] = sprintf(__('<a href="/fr/%s"'. $class .'>Trash <span class="count">(%d)</span></a>', 'trash'),
          admin_url('edit.php?post_status=trash&post_type=post'),
          $result->found_posts);

    endif;
  }
 
  return $views;
}

3. Correction du nombre de médias

Si vous souhaitez également désactiver le nombre de médias, ajoutez le code ci-dessous à votre fichier functions.php. Pour que ce code fonctionne, assurez-vous d'ajouter également le premier code, c'est-à-dire le code qui désactive l'affichage des publications et des médias des autres utilisateurs. 

function fix_media_counts($views) {
  global $wpdb, $current_user, $post_mime_types, $avail_post_mime_types;
  $views = array();
  $_num_posts = array();
  $count = $wpdb->get_results( "

    SELECT post_mime_type, COUNT( * ) AS num_posts
    FROM $wpdb->posts
    WHERE post_type = 'attachment'
    AND post_author = $current_user->ID
    AND post_status != 'trash'
    GROUP BY post_mime_type

 ", ARRAY_A );

 foreach( $count as $row )
    $_num_posts[$row['post_mime_type']] = $row['num_posts'];
    $_total_posts = array_sum($_num_posts);
    $detached = isset( $_REQUEST['detached'] ) || isset( $_REQUEST['find_detached'] );

 if ( !isset( $total_orphans ) )
    $total_orphans = $wpdb->get_var("

        SELECT COUNT( * )
        FROM $wpdb->posts
        WHERE post_type = 'attachment'
        AND post_author = $current_user->ID
        AND post_status != 'trash'
        AND post_parent < 1

    ");

  $matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts));
 
  foreach ( $matches as $type => $reals )

    foreach ( $reals as $real )

      $num_posts[$type] = ( isset( $num_posts[$type] ) ) ? $num_posts[$type] + $_num_posts[$real] : $_num_posts[$real];
      $class = ( empty($_GET['post_mime_type']) && !$detached && !isset($_GET['status']) ) ? ' class="current"' : '';
      $views['all'] = "<a href='upload.php'$class>" . sprintf( __('All <span class="count">(%s)</span>', 'uploaded files' ), number_format_i18n( $_total_posts )) . '</a>';

   foreach ( $post_mime_types as $mime_type => $label ) {

    $class = '';
    if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) )
      continue;

    if ( !empty($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) )
      $class = ' class="current"';

    if ( !empty( $num_posts[$mime_type] ) )
      $views[$mime_type] = "<a href='upload.php?post_mime_type=$mime_type'$class>" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), $num_posts[$mime_type] ) . '</a>';

  }

 $views['detached'] = '<a href="/fr/upload.php?detached=1"' . ( $detached ? ' class="current"' : '' ) . '>' . sprintf( __( 'Unattached <span class="count">(%s)</span>', 'detached files' ), $total_orphans ) . '</a>';

 return $views;
}

 Et ce mesdames et messieurs est un hack de code qui vous permet de n'afficher que les publications et les médias de l'utilisateur WordPress actuellement connecté.

Vérifier si un utilisateur est connecté à WordPress

Dans le tweak de code ci-dessus, nous devions vérifier si un utilisateur pouvait modifier les publications. Mais si vous souhaitez vérifier si un utilisateur est connecté à WordPress via le code, vous pouvez utiliser le code suivant:

if ( is_user_logged_in() ) {
    echo 'Welcome, registered user!';
} else {
    echo 'Welcome, visitor!';
};
 

En revanche, si vous recherchez un moyen simple de savoir si un utilisateur est connecté au backend, vous pouvez utiliser le plugin suivant: Déconnexion WPForce ou le plugin Who's Logged In.

wp force la déconnexion pour voir si les utilisateurs sont connectés

 

Besoin d'aide pour faire avancer les choses? Essayez ces concerts abordables les mieux notés sur Fiverr!

logo fiverr

Cliquez ici pour trouver des experts sur résoudre les problèmes de WordPress.

Cliquez ici créer un site WordPress complet.

 

 
Téléchargez la liste des 101 astuces WordPress que tout blogueur devrait connaître

101 astuces WordPress

Cliquez ici pour télécharger maintenant
 
À propos de l’auteur
David Attar
David travaille dans ou autour de l'industrie en ligne et numérique depuis 21 ans. Il possède une vaste expérience dans les secteurs des logiciels et de la conception Web utilisant WordPress, Joomla et les niches qui les entourent. Il a travaillé avec des agences de développement de logiciels, des éditeurs de logiciels internationaux, des agences de marketing locales et est désormais responsable des opérations marketing chez Aphex Media, une agence de référencement. En tant que consultant numérique, son objectif est d'aider les entreprises à obtenir un avantage concurrentiel en utilisant une combinaison de leur site Web et des plateformes numériques disponibles aujourd'hui. Son mélange d'expertise technologique combiné à un fort sens des affaires confère un avantage concurrentiel à ses écrits.

Encore une chose ... Saviez-vous que les personnes qui partagent des informations utiles comme cet article ont l'air géniales aussi? ;-)
Veuillez laisser un incontournable commentez vos pensées, puis partagez-les sur votre ou vos groupes Facebook qui trouveraient cela utile et récoltons ensemble les avantages. Merci d'avoir partagé et d'être gentil!

Divulgation: Cette page peut contenir des liens vers des sites externes pour des produits que nous aimons et que nous recommandons sans réserve. Si vous achetez des produits que nous suggérons, nous pouvons percevoir des frais de parrainage. Ces frais n'influencent pas nos recommandations et nous n'acceptons pas les paiements pour les avis positifs.

Auteur (s) présenté sur:  Logo du magazine Inc   Logo Sitepoint   Logo CSS Tricks    logo webdesignerdepot   Logo WPMU DEV   et beaucoup plus ...