Kuinka poistaa muiden WordPress-käyttäjien viestien ja mediatiedostojen näyttäminen käytöstä
Jos olet koskaan työskennellyt WordPress-yhteisösivustolla, jota tukevat monet julkaisijat, olet ehkä huomannut, että vaikka et voi muokata muiden viestejä, voit silti tarkastella jokaisen viestin otsikkoa WordPress-järjestelmänvalvojan sisällä.
Tämä johtuu siitä, että oletusarvoisesti WordPress sallii kirjoittajien nähdä jokaisen julkaistun viestin, luonnoksen ja median otsikot.
Tässä opetusohjelmassa näytämme sinulle, kuinka muiden käyttäjien viestejä ja mediaa ei voi näyttää.
Jos haluat nähdä lisää temppuja, joita voit käyttää WordPressin kanssa, muista tutustua joihinkin muihin artikkeleihimme.
Muista ottaa WordPress-varmuuskopio (käyttämällä näitä laajennuksia) ennen kuin jatkat, jos jotain katkeaa koodin säätämisen aikana.
Lisätietoja käytöstä WP_Räätälöityjen viestityyppien kysely.
1. Poista muiden WordPress-käyttäjien viestien ja medioiden näyttäminen käytöstä
Lisää alla oleva koodi functions.php-tiedostoon, jotta muiden käyttäjien viestejä ja mediaa ei näytetä.
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. Poista käytöstä WordPress-viestien määrä
Kuten mainittiin, yllä annettu koodi poistaa vain muiden viesteiden otsikoiden näyttämisen WordPress-hallintapaneelissa.
Ongelmana on, että se ei poista postimäärien näyttämistä 'kaikki viestit', 'luonnokset', 'roskakori' ja 'odottavat' suodatinpalkkeissa. Jos haluat korjata viestien määrän myös suodatinpalkkeissa, lisää alla oleva koodinpätkä teeman toiminnot.php-tiedostoon.
Huomaa, että alla oleva koodi toimii vain, jos sitä käytetään yllä olevan koodin kanssa.
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="/fi/%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="/fi/%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="/fi/%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="/fi/%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="/fi/%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. Korjaa tulostusmateriaalien määrä
Jos haluat poistaa myös medialaskennan käytöstä, lisää alla oleva koodi function.php-tiedostoon. Jotta tämä koodi toimisi, varmista, että lisäät myös ensimmäisen koodin, eli koodin, joka estää muiden käyttäjien viestien ja medioiden näyttämisen.
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="/fi/upload.php?detached=1"' . ( $detached ? ' class="current"' : '' ) . '>' . sprintf( __( 'Unattached <span class="count">(%s)</span>', 'detached files' ), $total_orphans ) . '</a>';
return $views;
}
Ja että naiset ja herrat ovat koodihakkerointi, jonka avulla voit näyttää vain sisäänkirjautuneen WordPress-käyttäjän viestit ja mediat.
Tarkista, onko käyttäjä kirjautunut sisään WordPressiin
Edellä mainitussa koodin muutoksessa meidän oli tarkistettava, pystyykö käyttäjä muokkaamaan viestejä. Mutta jos haluat tarkistaa, onko käyttäjä kirjautunut WordPressiin koodilla, voit käyttää seuraavaa koodia:
if ( is_user_logged_in() ) {
echo 'Welcome, registered user!';
} else {
echo 'Welcome, visitor!';
};
Toisaalta, jos etsit yksinkertaista tapaa tietää, onko käyttäjä kirjautunut backendiin, voit käyttää seuraavaa laajennusta: WPForce-uloskirjautuminen tai Who's Logged In -laajennus.
Tarvitsetko apua asioiden tekemiseen? Kokeile näitä huippuluokan edullisia keikkoja Fiverrillä!
Klikkaa tästä löytää asiantuntijoita korjaamalla WordPress-ongelmat.
Klikkaa tästä luoda a täysi WordPress-verkkosivusto.
Ole hyvä Jätä hyödyllinen kommentoi ajatuksiasi ja jaa tämä sitten Facebook-ryhmissäsi (ryhmissä), jotka pitävät tätä hyödyllisenä, ja hyödynnetään yhdessä. Kiitos jakamisesta ja mukavuudesta!
Disclosure: Tämä sivu voi sisältää linkkejä ulkoisille sivustoille tuotteille, joita rakastamme ja kannatamme sydämestämme. Jos ostat suosittelemiamme tuotteita, saatamme ansaita viittausmaksun. Tällaiset maksut eivät vaikuta suosituksiimme, emmekä hyväksy maksuja positiivisista arvosteluista.