Näytä vain kirjautuneen WordPress-käyttäjän omistamat viestit / media

Wordpress näyttää vain kirjautuneen käyttäjän omistamat Wordpress-viestit ja media

Kuinka poistaa muiden WordPress-käyttäjien viestien ja mediatiedostojen näyttäminen käytöstä

Jos olet koskaan työskennellyt WordPress-yhteisösivustolla, jota tukevat monet julkaisijat, olet ehkä huomannut, että vaikka et voi muokata muiden viestejä, voit silti tarkastella jokaisen viestin otsikkoa WordPress-järjestelmänvalvojan sisällä. 

Tämä johtuu siitä, että oletusarvoisesti WordPress sallii kirjoittajien nähdä jokaisen julkaistun viestin, luonnoksen ja median otsikot.

Tässä opetusohjelmassa näytämme sinulle, kuinka muiden käyttäjien viestejä ja mediaa ei voi näyttää.

Jos haluat nähdä lisää temppuja, joita voit käyttää WordPressin kanssa, muista tutustua joihinkin muihin artikkeleihimme.

Sisällys[show]

otsikkonäkymä poistettu käytöstä

Muista ottaa WordPress-varmuuskopio (käyttämällä näitä laajennuksia) ennen kuin jatkat, jos jotain katkeaa koodin säätämisen aikana. 

1. Poista muiden WordPress-käyttäjien viestien ja medioiden näyttäminen käytöstä

Lisää alla oleva koodi functions.php-tiedostoon, jotta muiden käyttäjien viestejä ja mediaa ei näytetä.

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. Poista käytöstä WordPress-viestien määrä

Kuten mainittiin, yllä annettu koodi poistaa vain muiden viesteiden otsikoiden näyttämisen WordPress-hallintapaneelissa.

Ongelmana on, että se ei poista postimäärien näyttämistä 'kaikki viestit', 'luonnokset', 'roskakori' ja 'odottavat' suodatinpalkkeissa. Jos haluat korjata viestien määrän myös suodatinpalkkeissa, lisää alla oleva koodinpätkä teeman toiminnot.php-tiedostoon.

Huomaa, että alla oleva koodi toimii vain, jos sitä käytetään yllä olevan koodin kanssa.

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. Korjaa tulostusmateriaalien määrä

Jos haluat poistaa myös medialaskennan käytöstä, lisää alla oleva koodi function.php-tiedostoon. Jotta tämä koodi toimisi, varmista, että lisäät myös ensimmäisen koodin, eli koodin, joka estää muiden käyttäjien viestien ja medioiden näyttämisen. 

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;
}

 Ja että naiset ja herrat ovat koodihakkerointi, jonka avulla voit näyttää vain sisäänkirjautuneen WordPress-käyttäjän viestit ja mediat.

Tarkista, onko käyttäjä kirjautunut sisään WordPressiin

Edellä mainitussa koodin muutoksessa meidän oli tarkistettava, pystyykö käyttäjä muokkaamaan viestejä. Mutta jos haluat tarkistaa, onko käyttäjä kirjautunut WordPressiin koodilla, voit käyttää seuraavaa koodia:

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

Toisaalta, jos etsit yksinkertaista tapaa tietää, onko käyttäjä kirjautunut backendiin, voit käyttää seuraavaa laajennusta: WPForce-uloskirjautuminen tai Who's Logged In -laajennus.

wp pakota uloskirjautuminen nähdäksesi onko käyttäjät kirjautuneet sisään

 

Tarvitsetko apua asioiden tekemiseen? Kokeile näitä huippuluokan edullisia keikkoja Fiverrillä!

fiverr-logo

Klikkaa tästä löytää asiantuntijoita korjaamalla WordPress-ongelmat.

Klikkaa tästä luoda a täysi WordPress-verkkosivusto.

 

 
Lataa luettelo 101 WordPress-temppusta, jonka jokaisen bloggaajan tulisi tietää

101 WordPress-temppua

Napsauta tätä ja lataa nyt
 
kirjailijasta
David Attard
Kirjoittaja: David AttardVerkkosivu: https://www.linkedin.com/in/dattard/
David on työskennellyt verkko- / digitaalialalla tai sen ympäristössä viimeiset 18 vuotta. Hänellä on laaja kokemus ohjelmisto- ja verkkosuunnitteluteollisuudesta WordPressin, Joomlan ja niitä ympäröivien markkinarakojen käytöstä. Digitaalisena konsulttina hän keskittyy auttamaan yrityksiä saamaan kilpailuetua käyttämällä verkkosivustonsa ja tänään saatavilla olevien digitaalisten alustojen yhdistelmää.

Yksi asia vielä... Tiesitkö, että ihmiset, jotka jakavat hyödyllisiä juttuja, kuten tämä viesti, näyttävät myös mahtavilta? ;-)
Ole hyvä Jätä hyödyllinen kommentoi ajatuksiasi ja jaa tämä sitten Facebook-ryhmissäsi (ryhmissä), jotka pitävät tätä hyödyllisenä, ja hyödynnetään yhdessä. Kiitos jakamisesta ja mukavuudesta!

Disclosure: Tämä sivu voi sisältää linkkejä ulkoisille sivustoille tuotteille, joita rakastamme ja kannatamme sydämestämme. Jos ostat suosittelemiamme tuotteita, saatamme ansaita viittausmaksun. Tällaiset maksut eivät vaikuta suosituksiimme, emmekä hyväksy maksuja positiivisista arvosteluista.

Kirjoittaja (t) esillä:  Inc-lehden logo   Sitepoint-logo   CSS Tricks -logo    webdesignerdepot-logo   WPMU DEV -logo   ja paljon muuta ...