Sådan deaktiveres visning af indlæg og medier fra andre WordPress-brugere
Hvis du nogensinde har arbejdet på et WordPress-community-websted understøttet af mange udgivere, har du måske bemærket, at selvom du ikke kan redigere andres indlæg, kan du stadig se titlerne på hvert indlæg inde i WordPress-administratoren.
Det skyldes, at WordPress som standard giver forfattere mulighed for at se titlerne på hvert offentliggjort indlæg, kladder og medier.
I denne vejledning viser vi dig, hvordan du deaktiverer visning af indlæg og medier fra andre brugere.
Hvis du vil se flere tricks, du kan bruge med WordPress, skal du sørge for at tjekke nogle af vores andre artikler.
Husk at tage en WordPress-sikkerhedskopi (ved hjælp af disse plugins) inden du fortsætter, hvis noget går i stykker, mens du tilpasser koden.
Lær mere om brug WP_Query for brugerdefinerede indlægstyper.
1. Deaktiver visning af indlæg og medier fra andre WordPress-brugere
Tilføj nedenstående kode til din functions.php-fil for at deaktivere visning af indlæg og medier fra andre brugere.
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 af WordPress-posttællinger
Som nævnt deaktiverer ovenstående kode kun visning af titler på andres indlæg inde i WordPress-dashboardet.
Problemet er, at det ikke vil deaktivere visning af antallet af indlæg i filterbjælkerne 'alle indlæg', 'kladder', 'papirkurven' og 'afventende'. Hvis du også vil rette antallet af indlæg i filterbjælkerne, skal du tilføje nedenstående kodestykke til dit temas funktioner.php-fil.
Bemærk, at nedenstående kode kun fungerer, hvis den bruges sammen med ovenstående 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="/da/%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="/da/%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="/da/%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="/da/%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="/da/%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. Ret medieoptællinger
Hvis du også vil deaktivere medietællingerne, skal du tilføje nedenstående kode til din functions.php-fil. For at få denne kode til at fungere, skal du sørge for at tilføje den første kode også, det vil sige den kode, der deaktiverer visning af post og medier fra andre brugere.
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="/da/upload.php?detached=1"' . ( $detached ? ' class="current"' : '' ) . '>' . sprintf( __( 'Unattached <span class="count">(%s)</span>', 'detached files' ), $total_orphans ) . '</a>';
return $views;
}
Og at mine damer og herrer er et kodehack, som giver dig mulighed for kun at vise indlæg og medier for den aktuelt loggede WordPress-bruger.
Kontroller, om en bruger er logget på WordPress
I ovenstående kodetilpasning var vi nødt til at kontrollere, om en bruger var i stand til at redigere indlæg. Men hvis du vil kontrollere, om en bruger er logget på WordPress via kode, kan du bruge følgende kode:
if ( is_user_logged_in() ) {
echo 'Welcome, registered user!';
} else {
echo 'Welcome, visitor!';
};
På den anden side, hvis du leder efter en enkel måde at vide, om en bruger er logget ind i backend, kan du bruge følgende plugin: WPForce-logout eller Hvem er logget på plugin.
Brug for hjælp til at få ting gjort? Prøv disse topbedømte overkommelige koncerter på Fiverr!
Klik her at finde eksperter på løsning af WordPress-problemer.
Klik her at oprette en hele WordPress-webstedet.
Vær venlig at forlade a nyttigt kommenter med dine tanker, så del dette på din Facebook-gruppe (r), der ville finde det nyttigt, og lad os høste fordelene sammen. Tak fordi du delte og var god!
Afsløring: Denne side kan indeholde links til eksterne websteder for produkter, som vi elsker og helhjertet anbefaler. Hvis du køber produkter, vi foreslår, tjener vi muligvis et henvisningsgebyr. Sådanne gebyrer påvirker ikke vores anbefalinger, og vi accepterer ikke betalinger for positive anmeldelser.