Vis kun indlæg / medier ejet af logget på WordPress-bruger

Wordpress viser kun wordpress-indlæg og medier, der ejes af logget bruger

Sådan deaktiveres visning af indlæg og medier fra andre WordPress-brugere

Hvis du nogensinde har arbejdet på et WordPress-community-websted understøttet af mange udgivere, har du måske bemærket, at selvom du ikke kan redigere andres indlæg, kan du stadig se titlerne på hvert indlæg inde i WordPress-administratoren. 

Det skyldes, at WordPress som standard giver forfattere mulighed for at se titlerne på hvert offentliggjort indlæg, kladder og medier.

I denne vejledning viser vi dig, hvordan du deaktiverer visning af indlæg og medier fra andre brugere.

Hvis du vil se flere tricks, du kan bruge med WordPress, skal du sørge for at tjekke nogle af vores andre artikler.

Indhold[show]

visning af titler deaktiveret

Husk at tage en WordPress-sikkerhedskopi (ved hjælp af disse plugins) inden du fortsætter, hvis noget går i stykker, mens du tilpasser koden. 

Lær mere om brug WP_Query for brugerdefinerede indlægstyper.

1. Deaktiver visning af indlæg og medier fra andre WordPress-brugere

Tilføj nedenstående kode til din functions.php-fil for at deaktivere visning af indlæg og medier fra andre brugere.

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. Deaktiver visning af WordPress-posttællinger

Som nævnt deaktiverer ovenstående kode kun visning af titler på andres indlæg inde i WordPress-dashboardet.

Problemet er, at det ikke vil deaktivere visning af antallet af indlæg i filterbjælkerne 'alle indlæg', 'kladder', 'papirkurven' og 'afventende'. Hvis du også vil rette antallet af indlæg i filterbjælkerne, skal du tilføje nedenstående kodestykke til dit temas funktioner.php-fil.

Bemærk, at nedenstående kode kun fungerer, hvis den bruges sammen med ovenstående kode.

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="/da/%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="/da/%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="/da/%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="/da/%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="/da/%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. Ret medieoptællinger

Hvis du også vil deaktivere medietællingerne, skal du tilføje nedenstående kode til din functions.php-fil. For at få denne kode til at fungere, skal du sørge for at tilføje den første kode også, det vil sige den kode, der deaktiverer visning af post og medier fra andre brugere. 

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

 return $views;
}

 Og at mine damer og herrer er et kodehack, som giver dig mulighed for kun at vise indlæg og medier for den aktuelt loggede WordPress-bruger.

Kontroller, om en bruger er logget på WordPress

I ovenstående kodetilpasning var vi nødt til at kontrollere, om en bruger var i stand til at redigere indlæg. Men hvis du vil kontrollere, om en bruger er logget på WordPress via kode, kan du bruge følgende kode:

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

På den anden side, hvis du leder efter en enkel måde at vide, om en bruger er logget ind i backend, kan du bruge følgende plugin: WPForce-logout eller Hvem er logget på plugin.

wp tving logout for at se, om brugerne er logget ind

 

Brug for hjælp til at få ting gjort? Prøv disse topbedømte overkommelige koncerter på Fiverr!

fiverr logo

Klik her at finde eksperter på løsning af WordPress-problemer.

Klik her at oprette en hele WordPress-webstedet.

 

 
Download listen over 101 WordPress-tricks, som enhver blogger skal kende

101 WordPress-tricks

Klik her for at downloade nu
 
Om forfatteren
David Attard
David har arbejdet i eller omkring online- og digitalindustrien i de sidste 21 år. Han har stor erfaring i software- og webdesignindustrien ved at bruge WordPress, Joomla og nicher omkring dem. Han har arbejdet med softwareudviklingsbureauer, internationale softwarevirksomheder, lokale marketingbureauer og er nu Head of Marketing Operations hos Aphex Media - et SEO-bureau. Som digital konsulent er hans fokus på at hjælpe virksomheder med at få en konkurrencefordel ved at bruge en kombination af deres hjemmeside og digitale platforme, der er tilgængelige i dag. Hans blanding af teknologisk ekspertise kombineret med et stærkt forretningssans giver hans forfatterskab en konkurrencefordel.

En ting mere... Vidste du, at folk, der deler nyttige ting som dette indlæg, også ser FANTASTISKE ud? ;-)
Vær venlig at forlade a nyttigt kommenter med dine tanker, så del dette på din Facebook-gruppe (r), der ville finde det nyttigt, og lad os høste fordelene sammen. Tak fordi du delte og var god!

Afsløring: Denne side kan indeholde links til eksterne websteder for produkter, som vi elsker og helhjertet anbefaler. Hvis du køber produkter, vi foreslår, tjener vi muligvis et henvisningsgebyr. Sådanne gebyrer påvirker ikke vores anbefalinger, og vi accepterer ikke betalinger for positive anmeldelser.

Forfatter (e) Fremhævet den:  Inc Magazine-logo   Sitepoint-logo   CSS Tricks-logo    webdesignerdepot logo   WPMU DEV-logo   og mange flere ...