Como desativar a exibição de postagens e mídia de outros usuários do WordPress
Se você já trabalhou em um site de comunidade do WordPress apoiado por muitos editores, deve ter notado que, embora não possa editar as postagens de outras pessoas, você ainda pode ver os títulos de cada postagem dentro do administrador do WordPress.
É porque, por padrão, o WordPress permite que os autores vejam os títulos de cada postagem, rascunho e mídia publicada.
Neste tutorial, mostraremos como desabilitar a exibição de postagens e mídia de outros usuários.
Se você quiser ver mais truques que pode usar com o WordPress, verifique alguns de nossos outros artigos.
Lembre-se de fazer um backup do WordPress (usando esses plugins) antes de prosseguir, caso algo quebre durante o ajuste do código.
Saiba mais sobre o uso WP_Query para tipos de postagem personalizados.
1. Desative a exibição de postagens e mídia de outros usuários do WordPress
Adicione o código abaixo ao seu arquivo functions.php para desabilitar a exibição de postagens e mídia de outros usuários.
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. Desative a exibição de contagens de postagens do WordPress
Conforme mencionado, o código fornecido acima apenas desabilitará a exibição de títulos de postagens de outras pessoas dentro do painel do WordPress.
O problema é que ele não desativa a exibição da contagem de postagens nas barras de filtro 'todas as postagens', 'rascunhos', 'lixo' e 'pendentes'. Se você gostaria de corrigir a contagem de postagens nas barras de filtro também, adicione o trecho de código abaixo ao arquivo functions.php do seu tema.
Observe que o código abaixo funcionará apenas se for usado junto com o código fornecido acima.
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="/pt/%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="/pt/%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="/pt/%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="/pt/%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="/pt/%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. Corrigir contagens de mídia
Se você deseja desabilitar as contagens de mídia também, adicione o código abaixo ao seu arquivo functions.php. Para que esse código funcione, certifique-se de adicionar também o primeiro código, ou seja, o código que desabilita a exibição de postagens e mídias de outros usuários.
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="/pt/upload.php?detached=1"' . ( $detached ? ' class="current"' : '' ) . '>' . sprintf( __( 'Unattached <span class="count">(%s)</span>', 'detached files' ), $total_orphans ) . '</a>';
return $views;
}
E isso, senhoras e senhores, é um hack de código que permite a você mostrar apenas as postagens e a mídia do usuário do WordPress conectado no momento.
Verifique se um usuário está logado no WordPress
No ajuste de código acima, precisamos verificar se um usuário foi capaz de editar postagens. Mas se quiser verificar se um usuário está logado no WordPress via código, você pode usar o seguinte código:
if ( is_user_logged_in() ) {
echo 'Welcome, registered user!';
} else {
echo 'Welcome, visitor!';
};
Por outro lado, se você está procurando uma maneira simples de saber se um usuário está logado no back-end, pode usar o seguinte plugin: Logout do WPForce ou o plugin Quem está conectado.
Precisa de ajuda para fazer as coisas? Experimente esses shows acessíveis com melhor classificação no Fiverr!
Clique aqui para encontrar especialistas em corrigindo problemas do WordPress.
Clique aqui para criar um site WordPress completo.
. deixe um útil comente com suas ideias, depois compartilhe com seu (s) grupo (s) do Facebook, que considerariam isso útil e vamos colher os benefícios juntos. Obrigado por compartilhar e ser legal!
Divulgação: Esta página pode conter links para sites externos de produtos que amamos e recomendamos de todo o coração. Se você comprar produtos que sugerimos, podemos receber uma taxa de referência. Essas taxas não influenciam nossas recomendações e não aceitamos pagamentos por análises positivas.