Você está procurando uma maneira de forçar seu tipo de post personalizado a ser privado por padrão? Embora provavelmente exista um plugin para isso, criamos um pequeno trecho de código que você pode usar para forçar um tipo de post personalizado a ser privado no WordPress.
Instruções:
Tudo o que você precisa fazer é adicionar este código ao arquivo functions.php do seu tema ou a um plugin específico do site:
function force_type_private($post)
{
if ($post['post_type'] == 'my_post_type')
$post['post_status'] = 'private';
return $post;
}
add_filter('wp_insert_post_data', 'force_type_private');
Não se esqueça de alterar my_post_type para o nome do seu tipo de post personalizado. Esta é uma pequena alteração no código-fonte e não inclui uma senha, pois é privado e não protegido por senha.
Observação: Se esta é a sua primeira vez adicionando snippets de código no WordPress, consulte nosso guia sobre como adicionar snippets de código corretamente no WordPress, para não quebrar acidentalmente seu site.
Se você gostou deste trecho de código, considere conferir nossos outros artigos no site, como: os 28 melhores temas de currículo para WordPress e como criar um formulário de inscrição de emprego no WordPress.
Olá,
Alguma ideia de como fazer o mesmo código, mas para 2 CPTs diferentes em vez de um?
Agradeço desde já
eu sei que este tópico é um pouco antigo, mas... como você pode direcionar um campo personalizado nesse tipo de post personalizado para alterar seu valor?
Eu editei, então os links estão definidos para o nome do post em vez de "my_post_type/auto-draft" quando eles são criados. Desta forma, você também pode postar posts protegidos por senha.
function force_type_private($post)
{ if ($post[‘post_type’] == ‘my_post_type’) { if ($post[‘post_status’] == ‘publish’) $post[‘post_status’] = ‘private’; } return $post; } add_filter(‘wp_insert_post_data’, ‘force_type_private’);
Isso funciona, mas descobri que torna o post impossível de mover para a lixeira... você também experimentou isso?
Não, eu não tive esse problema, mas vou tentar e ver se consigo replicar o problema.
Sim, estou tendo exatamente o mesmo problema.. Alguém tem alguma ideia?
Por que você não faz: if ( post type = meu tipo de post) { status do post = privado; retornar post; }
Parece que você tem uma linha extra desnecessária.
Isso é verdade Adam, corrigi.
este código está correto?
Acho que você esqueceu um "ELSE"
Olá José,
Não, está correto, basta criar um novo tipo de post personalizado e adicionar isto ao functions.php e você notará que ao selecionar adicionar novo para esse tipo de post personalizado, ele terá a opção "privado" selecionada por padrão.
Olá Kevin,
Ainda não há como excluir meus posts com este código. Alguma ideia?
Atenciosamente,
Eu usei um código como este, que verifica se eles estão na lixeira antes de torná-los privados:
// Força posts do tipo personalizado 'internt-arkiv' a serem privados
// ...mas primeiro certifique-se de que eles não estão 'lixo' caso contrário é impossível jogar um post no lixo
function force_type_private($post)
{
if ($post[‘post_type’] == ‘my_post_type’) {
if ($post[‘post_status’] != ‘trash’) $post[‘post_status’] = ‘private’;
}
return $post;
}
add_filter(‘wp_insert_post_data’, ‘force_type_private’);
[…] Este post foi mencionado no Twitter por HTMLfrp, wp_freak. wp_freak disse: #wordpress Forçar tipo de post personalizado a ser privado http://bit.ly/fHzJuW […]