Cum se dezactivează afișarea postărilor și a conținutului media altor utilizatori WordPress
Dacă ați lucrat vreodată pe un site comunitar WordPress susținut de o mulțime de editori, s-ar putea să fi observat că, deși nu puteți edita postările altora, puteți vizualiza în continuare titlurile fiecărei postări din cadrul administratorului WordPress.
Acest lucru se datorează faptului că, în mod implicit, WordPress permite autorilor să vadă titlurile fiecărei postări publicate, schițe și materiale media.
În acest tutorial, vă vom arăta cum să dezactivați afișarea postărilor și a conținutului media altor utilizatori.
Dacă doriți să vedeți mai multe trucuri pe care le puteți folosi cu WordPress, asigurați-vă că consultați câteva dintre celelalte articole ale noastre.
Vă rugăm să nu uitați să faceți o copie de rezervă WordPress (folosind aceste pluginuri) înainte de a continua în cazul în care ceva se rupe în timp ce modificarea codului.
Aflați mai multe despre utilizare WP_Query pentru tipuri de postări personalizate.
1. Dezactivați afișarea postărilor și a conținutului media altor utilizatori WordPress
Adăugați codul de mai jos în fișierul funcții.php pentru a dezactiva afișarea postărilor și suporturilor media altor utilizatori.
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. Dezactivați afișarea numărărilor de postări WordPress
După cum sa menționat, codul menționat mai sus va dezactiva afișarea titlurilor postărilor altora în tabloul de bord WordPress.
Problema este că nu va dezactiva afișarea numărului de postări în barele de filtrare „toate postările”, „schițele”, „coșul de gunoi” și „în așteptare”. Dacă doriți să remediați și numărul de postări în barele de filtrare, adăugați fragmentul de cod de mai jos în fișierul temei dvs. functions.php.
Vă rugăm să rețineți că codul de mai jos va funcționa numai dacă este utilizat împreună cu codul de mai sus.
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="/ro/%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="/ro/%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="/ro/%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="/ro/%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="/ro/%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. Remediați numărul de suporturi media
Dacă doriți să dezactivați și numărul de medii, adăugați codul de mai jos în fișierul funcții.php. Pentru ca acest cod să funcționeze, asigurați-vă că adăugați și primul cod, adică codul care dezactivează afișarea mesajelor și a conținutului media altor utilizatori.
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="/ro/upload.php?detached=1"' . ( $detached ? ' class="current"' : '' ) . '>' . sprintf( __( 'Unattached <span class="count">(%s)</span>', 'detached files' ), $total_orphans ) . '</a>';
return $views;
}
Și doamnele și domnii sunt un hack de cod care vă permite să afișați numai postările și conținutul media al utilizatorului WordPress conectat în prezent.
Verificați dacă un utilizator este conectat la WordPress
În modificarea codului de mai sus, a trebuit să verificăm dacă un utilizator a fost capabil să editeze postări. Dar dacă doriți să verificați dacă un utilizator este conectat la WordPress prin cod, puteți utiliza următorul cod:
if ( is_user_logged_in() ) {
echo 'Welcome, registered user!';
} else {
echo 'Welcome, visitor!';
};
Pe de altă parte, dacă căutați o modalitate simplă de a afla dacă un utilizator este conectat în backend, puteți utiliza următorul plugin: Deconectare WPForce sau pluginul Cine s-a conectat.
Aveți nevoie de ajutor pentru a finaliza lucrurile? Încercați aceste concerte la prețuri accesibile de pe Fiverr!
Click aici pentru a găsi experți pe remedierea problemelor WordPress.
Click aici pentru a crea un site-ul WordPress complet.
Te rugăm să ne contactezi lasa un util comentează cu gândurile tale, apoi împărtășește acest lucru grupurilor tale de Facebook care ar găsi acest lucru util și să profităm împreună de beneficii. Vă mulțumim că ați împărtășit și ați fost drăguți!
Dezvaluirea: Această pagină poate conține linkuri către site-uri externe pentru produse pe care le iubim și le recomandăm din toată inima. Dacă cumpărați produse pe care vi le sugerăm, este posibil să câștigăm o taxă de recomandare. Astfel de taxe nu influențează recomandările noastre și nu acceptăm plăți pentru recenzii pozitive.