Visa endast inlägg / media som ägs av inloggad WordPress-användare

Wordpress visar endast wordpress-inlägg och media som ägs av inloggad användare

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.

Innehåll[Show]

titlar visa inaktiverade

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.

wp tvinga utloggning för att se om användare är inloggade

Behöver du hjälp med att göra saker? Prova dessa topprankade prisvärda spelningar på Fiverr!

fiverr-logotyp

Klicka här att hitta experter på fixa WordPress-problem.

Klicka här att skapa en hela WordPress-webbplatsen.

Ladda ner listan över 101 WordPress-trick som alla bloggare borde veta

101 WordPress-tricks

Klicka här för att ladda ner nu

Om författaren
David Attard
Författare: David Attardwebbplats: https://www.linkedin.com/in/dattard/
David har arbetat i eller runt online / digital industrin under de senaste 18 åren. Han har stor erfarenhet av mjukvaru- och webbdesignindustrin med WordPress, Joomla och nischer som omger dem. Som digital konsult fokuserar han på att hjälpa företag att få en konkurrensfördel med en kombination av deras webbplats och digitala plattformar som finns idag.


En sak till...
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.


About the Author

David has been working in or around the online and digital industry for the last 21 years. He has vast experience in the software and web design industries using WordPress, Joomla and niches surrounding them. He has worked with software development agencies, international software companies, local marketing agencies and now is Head of Marketing Operations at Aphex Media – an SEO agency. As a digital consultant, his focus is on helping businesses get a competitive advantage using a combination of their website and digital platforms available today. His blend of technology expertise combined with a strong business acumen brings a competitive edge to his writings.