Hur du inaktiverar visning av inlägg och media från andra WordPress-användare
Om du någonsin har arbetat på en WordPress-communitywebbplats som stöds av många utgivare, kanske du har märkt att även om du inte kan redigera andras inlägg, kan du fortfarande se titlarna på varje inlägg i WordPress-administratören.
Det beror på att WordPress som standard låter författare se titlarna på varje publicerat inlägg, utkast och media.
I den här handledningen visar vi dig hur du inaktiverar visning av inlägg och media från andra användare.
Om du vill se fler knep som du kan använda med WordPress, se till att kolla in några av våra andra artiklar.
Kom ihåg att ta en WordPress-säkerhetskopia (använder dessa plugins) innan du fortsätter om något går sönder medan du justerar koden.
Läs mer om hur du använder WP_Query för anpassade inläggstyper.
1. Inaktivera visning av inlägg och media från andra WordPress-användare
Lägg till koden nedan i din functions.php-fil för att inaktivera visning av inlägg och media från andra användare.
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. Inaktivera visning av antalet WordPress-inlägg
Som nämnts inaktiverar ovanstående kod endast visning av titlar på andras inlägg i WordPress-instrumentpanelen.
Problemet är att det inte kommer att inaktivera visning av inläggsräkningarna i “alla inlägg”, “utkast”, “papperskorgen” och “väntande” filterfält. Om du också vill fixa antalet inlägg i filterfältet, lägg till nedanstående kodavsnitt i ditt temas funktioner.php-fil.
Observera att koden nedan fungerar endast om den används tillsammans med den ovan angivna koden.
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(__('All (%d)', '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(__('Published (%d)', '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(__('Draft'. ((sizeof($result->posts) > 1) ? "s" : "") .' (%d)', '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(__('Pending (%d)', '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(__('Trash (%d)', 'trash'),
admin_url('edit.php?post_status=trash&post_type=post'),
$result->found_posts);
endif;
}
return $views;}
3. Åtgärda medieantal
Om du också vill inaktivera medieantalet lägger du till koden nedan i din functions.php-fil. För att få den här koden att fungera, se till att du också lägger till den första koden, det vill säga koden som inaktiverar visning av inlägg och media från andra användare.
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'] = "" . sprintf( __('All (%s)', 'uploaded files' ), number_format_i18n( $_total_posts )) . '';
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] = "" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), $num_posts[$mime_type] ) . '';
}
$views['detached'] = '' . sprintf( __( 'Unattached (%s)', 'detached files' ), $total_orphans ) . '';
return $views;
}
Och att mina damer och herrar är ett kodhack som låter dig bara visa inlägg och media för den för närvarande inloggade WordPress-användaren.
Kontrollera om en användare är inloggad på WordPress
I kodjusteringen ovan behövde vi kontrollera om en användare kunde redigera inlägg. Men om du vill kontrollera om en användare är inloggad i WordPress via kod kan du använda följande kod:
if ( is_user_logged_in() ) {
echo 'Welcome, registered user!';
} else {
echo 'Welcome, visitor!';
};
Å andra sidan, om du letar efter ett enkelt sätt att veta om en användare är inloggad i backend, kan du använda följande plugin: WPForce-utloggning eller vem är inloggad plugin.
Behöver du hjälp med att göra saker? Prova dessa topprankade prisvärda spelningar på Fiverr!
Klicka här att hitta experter på fixa WordPress-problem.
Klicka här att skapa en hela WordPress-webbplatsen.

Visste du att människor som delar användbara saker som det här inlägget ser fantastiska ut också? 😉
Tveka inte, lämna en användbara kommentera med dina tankar, dela sedan detta på din Facebook-grupp (er) som skulle tycka att det var användbart och låt oss skörda fördelarna tillsammans. Tack för att du delade och var trevlig!
Upplysningar: Denna sida kan innehålla länkar till externa webbplatser för produkter som vi älskar och rekommenderar helhjärtat. Om du köper produkter vi föreslår kan vi tjäna en remissavgift. Sådana avgifter påverkar inte våra rekommendationer och vi accepterar inte betalningar för positiva recensioner.