Mostra solo post / media di proprietà di utenti WordPress registrati

Wordpress mostra solo i post e i media di wordpress di proprietà dell'utente che ha effettuato l'accesso

Come disabilitare la visualizzazione di post e media di altri utenti di WordPress

Se hai mai lavorato su un sito della community di WordPress supportato da molti editori, potresti aver notato che anche se non puoi modificare i post di altri, puoi comunque visualizzare i titoli di ogni post all'interno dell'amministratore di WordPress. 

È perché, per impostazione predefinita, WordPress consente agli autori di vedere i titoli di ogni post, bozza e media pubblicato.

In questo tutorial, ti mostreremo come disabilitare la visualizzazione di post e media di altri utenti.

Se vuoi vedere altri trucchi che puoi usare con WordPress, assicurati di controllare alcuni dei nostri altri articoli.

Contenuti[Mostra]

visualizzazione dei titoli disattivata

Ricordati di eseguire un backup di WordPress (utilizzando questi plugin) prima di procedere nel caso in cui qualcosa si rompa durante la modifica del codice. 

1. Disabilita la visualizzazione di post e media di altri utenti di WordPress

Aggiungi il codice seguente al tuo file functions.php per disabilitare la visualizzazione di post e media di altri utenti.

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. Disabilita la visualizzazione del conteggio dei post di WordPress

Come accennato, il codice sopra indicato disabiliterà solo la visualizzazione dei titoli dei post di altri all'interno della dashboard di WordPress.

Il problema è che non disabiliterà la visualizzazione dei conteggi dei post nelle barre dei filtri "tutti i post", "bozze", "cestino" e "in sospeso". Se desideri correggere anche il conteggio dei post nelle barre dei filtri, aggiungi lo snippet di codice riportato di seguito al file functions.php del tuo tema.

Si noti che il codice seguente funzionerà solo se utilizzato insieme al codice sopra indicato.

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="%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="%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="%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="%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="%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. Correggere i conteggi dei supporti

Se vuoi disabilitare anche i conteggi dei media, aggiungi il codice seguente al tuo file functions.php. Affinché questo codice funzioni, assicurati di aggiungere anche il primo codice, ovvero il codice che disabilita la visualizzazione di post e media di altri utenti. 

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="upload.php?detached=1"' . ( $detached ? ' class="current"' : '' ) . '>' . sprintf( __( 'Unattached <span class="count">(%s)</span>', 'detached files' ), $total_orphans ) . '</a>';

 return $views;
}

 E quel signore e signore è un hack di codice che ti consente di mostrare solo i post ei media dell'utente WordPress attualmente connesso.

Controlla se un utente ha effettuato l'accesso a WordPress

Nella modifica del codice sopra, dovevamo verificare se un utente era in grado di modificare i post. Ma se si desidera verificare se un utente ha effettuato l'accesso a WordPress tramite codice, è possibile utilizzare il seguente codice:

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

D'altra parte, se stai cercando un modo semplice per sapere se un utente è connesso al backend, puoi utilizzare il seguente plugin: Logout di WPForce o il plug-in Chi ha effettuato l'accesso.

wp forza il logout per vedere se gli utenti hanno effettuato l'accesso

 

Hai bisogno di aiuto per fare le cose? Prova questi concerti economici di prim'ordine su Fiverr!

logo fiverr

Clicca qui per trovare esperti su risolvere i problemi di WordPress.

Clicca qui creare un sito web completo di WordPress.

 

 
Scarica l'elenco dei 101 trucchi per WordPress che ogni blogger dovrebbe conoscere

101 trucchi per WordPress

Fare clic qui per eseguire il download ora
 
L'autore
David Attard
Autore: David AttardSito web: https://www.linkedin.com/in/dattard/
David ha lavorato nel o intorno al settore online / digitale negli ultimi 18 anni. Ha una vasta esperienza nei settori del software e del web design utilizzando WordPress, Joomla e le nicchie che li circondano. In qualità di consulente digitale, il suo obiettivo è aiutare le aziende a ottenere un vantaggio competitivo utilizzando una combinazione del loro sito Web e delle piattaforme digitali disponibili oggi.

Un'altra cosa... Sapevi che anche le persone che condividono cose utili come questo post sembrano FANTASTICHE? ;-)
Fatti un favore: lasciare un utile commenta con i tuoi pensieri, quindi condividi questo articolo sui tuoi gruppi di Facebook che lo troverebbero utile e raccogliamo insieme i frutti. Grazie per la condivisione e per essere gentile!

Disclosure: Questa pagina può contenere collegamenti a siti esterni per prodotti che amiamo e consigliamo vivamente. Se acquisti prodotti che ti suggeriamo, potremmo guadagnare una commissione per segnalazione. Tali commissioni non influenzano le nostre raccomandazioni e non accettiamo pagamenti per recensioni positive.

Autore / i in primo piano su:  Inc Magazine Logo   Logo di Sitepoint   Logo CSS Tricks    logo webdesignerdepot   Logo WPMU DEV   e molti altri ...