Não tem como, e não entendi porque marcar o post como protegido se quer mostrá-lo a todos?
Você pode até restringir a visualização dependendo do usuário, mas esse tipo de recurso que quer não tem fundamento.
Diana K. C, grato pela atenção e pela resposta,
Veja bem, o porquê de exibir as postagens privadas para usuarios não logados :
Tem uma area no site, que lista todo o conteudo “premium” do site, porem somente lista e quando o usuário normal tentar ver a postagem completa, nao consiguira pois vai requerer estar logado, é um site de um cliente, este site tem conteudo para assinantes e tambem conteudo livre,
Tentei utilizar alguns filtros, mas tambem não tive sucesso, se alguem mais pode dar um dica, ou souber como fazê-lo…
Grato.
Consegui listar as postagens privadas, mas quando um usuario nao logado tenta acessar ao post completo, eu recebo um 404, sendo que na verdade, o objetivo seria mandá-lo para a página de cadastro, não sei se fui claro dessa forma, veja a abaixo o filtro que usei na listagem dos posts para incluir o post privado no loop.
function postagem_filtro($where = '') {
$where.=" OR wp_posts.post_status = 'private' ";
return $where;
}
add_filter('posts_where', 'postagem_filtro');
Entendi.
No arquivo de contexto de post único single.php, coloque um condicional para verificar se o usuário está logado com is_user_logged_in.
Se estiver, o conteúdo é mostrado, se não redireciona para tal página, através de wp_redirect, acho.
Exemplo:
<?php
if ( is_user_logged_in() ) {
the_content();
} else {
wp_redirect( 'http://site.com/registre' );;
}
?>
Obrigado, encontrei uma solução aqui, definindo o post_status na minha consulta de post como private, segue detalhes no link do GuiaWordPress
http://www.guiawp.com.br/dicas/wp-query-template/