Nur Beiträge / Medien anzeigen, die dem angemeldeten WordPress-Benutzer gehören

Wordpress zeigt nur WordPress-Beiträge und Medien an, die dem angemeldeten Benutzer gehören

So deaktivieren Sie das Anzeigen von Posts und Medien anderer WordPress-Benutzer

Wenn Sie jemals an einer WordPress-Community-Site gearbeitet haben, die von vielen Publishern unterstützt wird, haben Sie möglicherweise bemerkt, dass Sie die Titel aller Posts im WordPress-Administrator anzeigen können, obwohl Sie die Beiträge anderer nicht bearbeiten können. 

Dies liegt daran, dass WordPress den Autoren standardmäßig ermöglicht, die Titel aller veröffentlichten Beiträge, Entwürfe und Medien anzuzeigen.

In diesem Tutorial zeigen wir Ihnen, wie Sie das Anzeigen von Posts und Medien anderer Benutzer deaktivieren.

Wenn Sie mehr Tricks sehen möchten, die Sie mit WordPress verwenden können, lesen Sie unbedingt einige unserer anderen Artikel.

Inhalt[Anzahl Artikel]

Titelansicht deaktiviert

Bitte denken Sie daran, ein WordPress-Backup zu erstellen (mit diesen Plugins), bevor Sie fortfahren, falls beim Optimieren des Codes etwas kaputt geht. 

1. Deaktivieren Sie das Anzeigen von Posts und Medien anderer WordPress-Benutzer

Fügen Sie den folgenden Code zu Ihrer Datei functions.php hinzu, um die Anzeige von Posts und Medien anderer Benutzer zu deaktivieren.

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. Deaktivieren Sie die Anzeige der Anzahl der WordPress-Posts

Wie bereits erwähnt, deaktiviert der oben angegebene Code nur die Anzeige von Titeln anderer Beiträge im WordPress-Dashboard.

Das Problem ist, dass die Anzeige der Anzahl der Beiträge in den Filterleisten "Alle Beiträge", "Entwürfe", "Papierkorb" und "Ausstehend" nicht deaktiviert wird. Wenn Sie die Anzahl der Beiträge auch in den Filterleisten korrigieren möchten, fügen Sie den folgenden Codeausschnitt zur Datei functions.php Ihres Themas hinzu.

Bitte beachten Sie, dass der folgende Code nur funktioniert, wenn er zusammen mit dem oben angegebenen Code verwendet wird.

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. Korrigieren Sie die Anzahl der Medien

Wenn Sie auch die Anzahl der Medien deaktivieren möchten, fügen Sie den folgenden Code zu Ihrer Datei functions.php hinzu. Damit dieser Code funktioniert, stellen Sie sicher, dass Sie auch den ersten Code hinzufügen, dh den Code, der das Anzeigen von Beiträgen und Medien anderer Benutzer deaktiviert. 

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

 Und diese Damen und Herren sind ein Code-Hack, mit dem Sie nur die Beiträge und Medien des aktuell angemeldeten WordPress-Benutzers anzeigen können.

Überprüfen Sie, ob ein Benutzer in WordPress angemeldet ist

Bei der obigen Code-Optimierung mussten wir überprüfen, ob ein Benutzer Beiträge bearbeiten konnte. Wenn Sie jedoch überprüfen möchten, ob ein Benutzer über Code in WordPress angemeldet ist, können Sie den folgenden Code verwenden:

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

Wenn Sie jedoch nach einer einfachen Methode suchen, um festzustellen, ob ein Benutzer im Backend angemeldet ist, können Sie das folgende Plugin verwenden: WPForce-Abmeldung oder Wer ist angemeldet Plugin.

wp erzwingt die Abmeldung, um festzustellen, ob Benutzer angemeldet sind

 

Benötigen Sie Hilfe bei der Erledigung von Aufgaben? Probieren Sie diese erstklassigen, erschwinglichen Gigs auf Fiverr aus!

fiverr-Logo

Klicken Sie hier Experten zu finden Beheben von WordPress-Problemen.

Klicken Sie hier ein erstellen vollständige WordPress-Website.

 

 
Laden Sie die Liste der 101 WordPress-Tricks herunter, die jeder Blogger kennen sollte

101 WordPress-Tricks

Klicken Sie hier, um jetzt herunterzuladen
 
Über den Autor
David Attard
Autor: David AttardWebsite: https://www.linkedin.com/in/dattard/
David arbeitet seit 18 Jahren in oder um die Online- / Digitalbranche. Er verfügt über umfangreiche Erfahrung in der Software- und Webdesignbranche mit WordPress, Joomla und den sie umgebenden Nischen. Als digitaler Berater konzentriert er sich darauf, Unternehmen durch die Kombination ihrer Website und der heute verfügbaren digitalen Plattformen einen Wettbewerbsvorteil zu verschaffen.

Eine Sache noch... Wussten Sie, dass Leute, die nützliche Dinge wie diesen Beitrag teilen, auch FANTASTISCH aussehen? ;-);
Bitte kontaktieren Sie uns lass a nützlich Kommentieren Sie mit Ihren Gedanken und teilen Sie dies dann Ihren Facebook-Gruppen mit, die dies nützlich finden würden, und lassen Sie uns gemeinsam die Vorteile nutzen. Vielen Dank für das Teilen und nett zu sein!

Disclosure: Diese Seite enthält möglicherweise Links zu externen Websites für Produkte, die wir lieben und von ganzem Herzen empfehlen. Wenn Sie Produkte kaufen, die wir vorschlagen, können wir eine Empfehlungsgebühr verdienen. Solche Gebühren haben keinen Einfluss auf unsere Empfehlungen und wir akzeptieren keine Zahlungen für positive Bewertungen.

Autor (en) Empfohlen am:  Inc Magazin Logo   Sitepoint-Logo   CSS Tricks Logo    Webdesignerdepot-Logo   WPMU DEV Logo   und viele mehr ...