Afișați numai postările / media deținute de utilizatorul WordPress conectat

Wordpress afișează numai postările și suporturile media deținute de utilizatorul conectat

Cum se dezactivează afișarea postărilor și a conținutului media altor utilizatori WordPress

Dacă ați lucrat vreodată pe un site comunitar WordPress susținut de o mulțime de editori, s-ar putea să fi observat că, deși nu puteți edita postările altora, puteți vizualiza în continuare titlurile fiecărei postări din cadrul administratorului WordPress. 

Acest lucru se datorează faptului că, în mod implicit, WordPress permite autorilor să vadă titlurile fiecărei postări publicate, schițe și materiale media.

În acest tutorial, vă vom arăta cum să dezactivați afișarea postărilor și a conținutului media altor utilizatori.

Dacă doriți să vedeți mai multe trucuri pe care le puteți folosi cu WordPress, asigurați-vă că consultați câteva dintre celelalte articole ale noastre.

Cuprins[Spectacol]

vizualizarea titlurilor este dezactivată

Vă rugăm să nu uitați să faceți o copie de rezervă WordPress (folosind aceste pluginuri) înainte de a continua în cazul în care ceva se rupe în timp ce modificarea codului. 

Aflați mai multe despre utilizare WP_Query pentru tipuri de postări personalizate.

1. Dezactivați afișarea postărilor și a conținutului media altor utilizatori WordPress

Adăugați codul de mai jos în fișierul funcții.php pentru a dezactiva afișarea postărilor și suporturilor media altor utilizatori.

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. Dezactivați afișarea numărărilor de postări WordPress

După cum sa menționat, codul menționat mai sus va dezactiva afișarea titlurilor postărilor altora în tabloul de bord WordPress.

Problema este că nu va dezactiva afișarea numărului de postări în barele de filtrare „toate postările”, „schițele”, „coșul de gunoi” și „în așteptare”. Dacă doriți să remediați și numărul de postări în barele de filtrare, adăugați fragmentul de cod de mai jos în fișierul temei dvs. functions.php.

Vă rugăm să rețineți că codul de mai jos va funcționa numai dacă este utilizat împreună cu codul de mai sus.

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="/ro/%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="/ro/%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="/ro/%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="/ro/%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="/ro/%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. Remediați numărul de suporturi media

Dacă doriți să dezactivați și numărul de medii, adăugați codul de mai jos în fișierul funcții.php. Pentru ca acest cod să funcționeze, asigurați-vă că adăugați și primul cod, adică codul care dezactivează afișarea mesajelor și a conținutului media altor utilizatori. 

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

 return $views;
}

 Și doamnele și domnii sunt un hack de cod care vă permite să afișați numai postările și conținutul media al utilizatorului WordPress conectat în prezent.

Verificați dacă un utilizator este conectat la WordPress

În modificarea codului de mai sus, a trebuit să verificăm dacă un utilizator a fost capabil să editeze postări. Dar dacă doriți să verificați dacă un utilizator este conectat la WordPress prin cod, puteți utiliza următorul cod:

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

Pe de altă parte, dacă căutați o modalitate simplă de a afla dacă un utilizator este conectat în backend, puteți utiliza următorul plugin: Deconectare WPForce sau pluginul Cine s-a conectat.

wp forțează deconectarea pentru a vedea dacă utilizatorii sunt conectați

 

Aveți nevoie de ajutor pentru a finaliza lucrurile? Încercați aceste concerte la prețuri accesibile de pe Fiverr!

sigla fiverr

Click aici pentru a găsi experți pe remedierea problemelor WordPress.

Click aici pentru a crea un site-ul WordPress complet.

 

 
Descărcați lista celor 101 trucuri WordPress pe care fiecare blogger ar trebui să le cunoască

101 trucuri WordPress

Faceți clic aici pentru a descărca acum
 
Despre autor
David Attard
David a lucrat în sau în jurul industriei online și digitale în ultimii 21 de ani. Are o vastă experiență în industriile software și web design folosind WordPress, Joomla și nișele din jurul lor. A lucrat cu agenții de dezvoltare software, companii internaționale de software, agenții de marketing locale și acum este șeful operațiunilor de marketing la Aphex Media - o agenție SEO. În calitate de consultant digital, se concentrează pe a ajuta companiile să obțină un avantaj competitiv folosind o combinație a site-ului lor web și a platformelor digitale disponibile astăzi. Combinația sa de experiență tehnologică, combinată cu o puternică perspicacitate în afaceri, aduce un avantaj competitiv scrierilor sale.

Inca un lucru... Știați că și persoanele care împărtășesc lucruri utile precum această postare arată MĂRĂTOARE? ;-)
Te rugăm să ne contactezi lasa un util comentează cu gândurile tale, apoi împărtășește acest lucru grupurilor tale de Facebook care ar găsi acest lucru util și să profităm împreună de beneficii. Vă mulțumim că ați împărtășit și ați fost drăguți!

Dezvaluirea: Această pagină poate conține linkuri către site-uri externe pentru produse pe care le iubim și le recomandăm din toată inima. Dacă cumpărați produse pe care vi le sugerăm, este posibil să câștigăm o taxă de recomandare. Astfel de taxe nu influențează recomandările noastre și nu acceptăm plăți pentru recenzii pozitive.

Autor (i) prezentat (e) pe:  Logo-ul revistei Inc   Sigla Sitepoint   Logo CSS Tricks    sigla webdesignerdepot   Sigla WPMU DEV   si multe altele ...