Hoe de weergave van berichten en media van andere WordPress-gebruikers uit te schakelen
Als je ooit hebt gewerkt aan een WordPress-communitysite die door veel uitgevers wordt ondersteund, is het je misschien opgevallen dat, hoewel je de berichten van anderen niet kunt bewerken, je nog steeds de titels van elk bericht in de WordPress-beheerder kunt bekijken.
Het is omdat WordPress standaard auteurs toestaat om de titels van elk gepubliceerd bericht, concepten en media te zien.
In deze zelfstudie laten we u zien hoe u het weergeven van berichten en media van andere gebruikers kunt uitschakelen.
Als je meer trucs wilt zien die je met WordPress kunt gebruiken, bekijk dan zeker enkele van onze andere artikelen.
Vergeet niet om een WordPress-back-up te maken (deze plug-ins gebruiken) voordat u doorgaat voor het geval er iets kapot gaat tijdens het aanpassen van de code.
Meer informatie over het gebruik WP_Query voor aangepaste berichttypen.
1. Schakel het tonen van berichten en media van andere WordPress-gebruikers uit
Voeg de onderstaande code toe aan uw functions.php-bestand om het tonen van berichten en media van andere gebruikers uit te schakelen.
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. Weergave van WordPress-posttellingen uitschakelen
Zoals vermeld, zal de hierboven gegeven code alleen het weergeven van titels van berichten van anderen in het WordPress-dashboard uitschakelen.
Het probleem is dat het de weergave van het aantal berichten in de filterbalken 'alle berichten', 'concepten', 'prullenbak' en 'in behandeling' niet uitschakelt. Als je het aantal posts in de filterbalken ook wilt corrigeren, voeg dan het onderstaande codefragment toe aan het functions.php-bestand van je thema.
Houd er rekening mee dat de onderstaande code alleen werkt als deze samen met de hierboven gegeven code wordt gebruikt.
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="/nl/%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="/nl/%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="/nl/%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="/nl/%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="/nl/%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. Mediatellingen corrigeren
Als u ook de mediatellingen wilt uitschakelen, voegt u de onderstaande code toe aan uw functions.php-bestand. Om deze code te laten werken, moet u ervoor zorgen dat u ook de eerste code toevoegt, dat wil zeggen de code die het weergeven van berichten en media van andere gebruikers uitschakelt.
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="/nl/upload.php?detached=1"' . ( $detached ? ' class="current"' : '' ) . '>' . sprintf( __( 'Unattached <span class="count">(%s)</span>', 'detached files' ), $total_orphans ) . '</a>';
return $views;
}
En die dames en heren is een codehack waarmee je alleen de berichten en media van de momenteel ingelogde WordPress-gebruiker kunt laten zien.
Controleer of een gebruiker is ingelogd op WordPress
In de bovenstaande code-tweak moesten we controleren of een gebruiker berichten kon bewerken. Maar als je wilt controleren of een gebruiker via code in WordPress is ingelogd, kun je de volgende code gebruiken:
if ( is_user_logged_in() ) {
echo 'Welcome, registered user!';
} else {
echo 'Welcome, visitor!';
};
Aan de andere kant, als u op zoek bent naar een eenvoudige manier om te weten of een gebruiker is ingelogd in de backend, kunt u de volgende plug-in gebruiken: WPForce Uitloggen of Wie is ingelogd plug-in.
Hulp nodig om dingen voor elkaar te krijgen? Probeer deze best beoordeelde betaalbare optredens op Fiverr!
Klik hier om experts te vinden WordPress-problemen oplossen.
Klik hier om een te maken volledige WordPress website.
Alstublieft laat een nuttig geef commentaar met je mening, deel dit dan op je Facebook-groep (en) die dit nuttig zouden vinden en laten we samen de vruchten plukken. Bedankt voor het delen en aardig zijn!
Disclosure: Deze pagina kan links bevatten naar externe sites voor producten die we geweldig vinden en die we van harte aanbevelen. Als u producten koopt die we aanbevelen, kunnen we een verwijzingsvergoeding verdienen. Dergelijke vergoedingen hebben geen invloed op onze aanbevelingen en we accepteren geen betalingen voor positieve beoordelingen.