Slik deaktiverer du visning av innlegg og media fra andre WordPress-brukere
Hvis du noen gang har jobbet på et WordPress-fellesside støttet av mange utgivere, har du kanskje lagt merke til at selv om du ikke kan redigere andres innlegg, kan du fremdeles se titlene på hvert innlegg i WordPress-administratoren.
Det er fordi WordPress som standard tillater forfattere å se titlene på hvert publiserte innlegg, utkast og media.
I denne opplæringen viser vi deg hvordan du deaktiverer visning av innlegg og media fra andre brukere.
Hvis du vil se flere triks du kan bruke med WordPress, må du sjekke ut noen av våre andre artikler.
Husk å ta en WordPress-sikkerhetskopi (bruker disse pluginene) før du fortsetter hvis noe går i stykker mens du tilpasser koden.
Lær mer om bruk WP_Query for tilpassede innleggstyper.
1. Deaktiver visning av innlegg og media fra andre WordPress-brukere
Legg til koden nedenfor i functions.php-filen din for å deaktivere visning av innlegg og media fra andre brukere.
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. Deaktiver visning av antall WordPress-innlegg
Som nevnt vil den ovennevnte koden bare deaktivere visning av titler på andres innlegg i WordPress-dashbordet.
Problemet er at det ikke vil deaktivere visning av antall innlegg i filterstolpene 'alle innlegg', 'utkast', 'søppel' og 'ventende'. Hvis du også vil fikse antall innlegg i filterlinjene, kan du legge til kodebiten nedenfor i temaets funksjoner.php-fil.
Vær oppmerksom på at koden nedenfor fungerer bare hvis den brukes sammen med ovennevnte kode.
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="/no/%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="/no/%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="/no/%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="/no/%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="/no/%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. Fiks medietellinger
Hvis du også vil deaktivere medietellingen, kan du legge til koden nedenfor i functions.php-filen. For å få denne koden til å fungere, sørg for at du også legger til den første koden, det vil si koden som deaktiverer visning av innlegg og media fra andre brukere.
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="/no/upload.php?detached=1"' . ( $detached ? ' class="current"' : '' ) . '>' . sprintf( __( 'Unattached <span class="count">(%s)</span>', 'detached files' ), $total_orphans ) . '</a>';
return $views;
}
Og at damer og herrer er et kodehack som lar deg bare vise innleggene og media til den påloggede WordPress-brukeren.
Sjekk om en bruker er logget på WordPress
I ovennevnte kodejustering trengte vi å sjekke om en bruker klarte å redigere innlegg. Men hvis du vil sjekke om en bruker er logget på WordPress via kode, kan du bruke følgende kode:
if ( is_user_logged_in() ) {
echo 'Welcome, registered user!';
} else {
echo 'Welcome, visitor!';
};
På den annen side, hvis du leter etter en enkel måte å vite om en bruker er logget inn i backend, kan du bruke følgende plugin: WPForce-logg ut eller Who's Logged In plugin.
Trenger du hjelp med å få gjort ting? Prøv disse topprangerte rimelige konsertene på Fiverr!
Klikk her å finne eksperter på fikse WordPress-problemer.
Klikk her å lage en hele WordPress-nettstedet.
Vær så snill forlate en nyttig kommenter med tankene dine, så del dette på Facebook-gruppen din (e) som synes dette er nyttig, og la oss høste fordelene sammen. Takk for at du delte og var hyggelig!
Avsløring: Denne siden kan inneholde lenker til eksterne nettsteder for produkter som vi elsker og anbefaler helhjertet. Hvis du kjøper produkter vi foreslår, kan vi tjene et henvisningsgebyr. Slike avgifter påvirker ikke våre anbefalinger, og vi godtar ikke betaling for positive anmeldelser.