Permitindo que assinantes possam ler posts privados no WordPress

Por estranho que possa parecer, por padrão no WordPress, usuários assinantes não podem ler posts privados. Teve um dia que precisava fazer isso e pesquisei muito até chegar ao plugin do WordPress chamado Members. Ele permite que você possa especificar as permissões de cada nível de usuário (ler, publicar e remover posts, adicionar usuários, etc).

Após instalar o plugin, vá em Usuários > Roles. Na linha do Subscriber (Assinante), selecione a opção Edit. Aparece uma lista enorme de permissões que você pode oferecer para os assinantes. No meu caso, eu apenas selecionei a opção read_private_posts (ler posts privados). Clique em Update Role.

Agora, os usuários assinantes podem ler posts privados, mas os mesmos não estão sendo listados na lista de Posts Recentes… Neste caso, é necessário mexer no código do WordPress em wp-includes/default-widgets.php. No meu caso, na versão 3.3.1 do WordPress, cheguei até a linha 543. A linha filtra os posts que deverão aparecer em Posts Recentes.

$r = new WP_Query(array('posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true));

Mantive a mesma linha e adicionei alguns códigos a mais. No caso abaixo, caso algum usuário esteja logado, o filtro irá permitir a exibição de posts privados.

$r = new WP_Query(array('posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true));
if (is_user_logged_in()) {
            $r = new WP_Query(array('posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'post_status' => 'private', 'ignore_sticky_posts' => true));
}
silvio

Sobre Silvio Tenfen Junior

Experiência desde 2011 em Desenvolvimento Web e Sistemas. Desenvolvimento de Sites Estáticos e Auto-gerenciáveis com PHP Puro, ASP, CodeIgniter, CakePHP, Symfony, Zend, Joomla, WordPress, WooCommerce e React. Desenvolvimento de Web Services. Montagem de Lojas Virtuais Magento e WooCommerce com integração de estoque de produtos e pedidos. Integração com Pagamentos. Backup, Configuração e Manutenção de Servidores Linux (Amazon Web Services e DigitalOcean). Migração de Serviços de Hospedagem (Sites e E-mails). Atendimento ao Cliente para E-mails, Sites e Sistemas.

1 comentário em “Permitindo que assinantes possam ler posts privados no WordPress

  1. Rafael

    Amigo, preciso desse código só que para comentários, para os comentários dos post privado aparecer no widget comentários recentes para usuarios logados, você sabe fazer?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.