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.
Bitte denken Sie daran, ein WordPress-Backup zu erstellen (mit diesen Plugins), bevor Sie fortfahren, falls beim Optimieren des Codes etwas kaputt geht.
Erfahren Sie mehr über die Verwendung von WP_Query für benutzerdefinierte Beitragstypen.
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="/de/%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="/de/%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="/de/%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="/de/%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="/de/%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="/de/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.
Benötigen Sie Hilfe bei der Erledigung von Aufgaben? Probieren Sie diese erstklassigen, erschwinglichen Gigs auf Fiverr aus!
Hier geht es weiter. Experten zu finden Beheben von WordPress-Problemen.
Hier geht es weiter. ein erstellen vollständige WordPress-Website.
Bitte kontaktieren Sie uns, wenn Sie Probleme im Zusammenhang mit dieser Website haben oder 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.