Está procurando uma maneira de forçar seu tipo de postagem personalizada a ser privado por padrão? Embora provavelmente exista um plug-in para isso, criamos um trecho de código rápido que você pode usar para forçar o tipo de postagem personalizada a ser privado no WordPress.
Instruções:
Tudo o que você precisa fazer é adicionar esse código ao arquivo functions.php do seu tema ou em um plug-in 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 de seu tipo de post personalizado. Essa é uma pequena alteração do código-fonte e não inclui uma senha, pois é privada e não protegida por senha.
Observação: Se esta é a primeira vez que você adiciona trechos de código no WordPress, consulte nosso guia sobre como adicionar corretamente trechos de código no WordPress para não danificar acidentalmente seu site.
Se você gostou desse snippet de código, considere dar uma olhada em nossos outros artigos no site, como: 28 melhores temas de currículo do WordPress e como criar um formulário de solicitação de emprego no WordPress.
Hello,
Any idea how to do the same code but for 2 different CPT instead one?
Thanks in advance
i know this thread is a little old but…how can you target a custom field in that custom post type to change it’s value?
I edited it, so links are set to the post name instead of “my_post_type/auto-draft” when they are created. This way you can also post password-protected posts.
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’);
This works, but I have found that it makes the post impossible to move to the trash… have you also experienced this?
No I have not had this issue, but ill give it a try and see if I can replicate the problem.
Yes, I’m having the exact same problem.. Anybody have any ideas?
Why don’t you just do: if ( post type = my post type) { post status = private; return post; }
Seems like you have an extra unneeded line.
This is true Adam, fixed it.
is this code correct?
I think that you forgot one “ELSE”
Hi Jose,
No it is correct, just create a new custom post type then add this to the functions.php and you will notice when you select add new for that custom post type it will be default have private selected.
Hello Kevin,
Still no way to delete my posts with this code.Any idea ?
Regards,
I used code like this, which checks if they are in the trash before making them private:
//Force posts of custom type ‘internt-arkiv’ to be private
//…but first make sure they are not ‘trash’ otherwise it is impossible to trash a post
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’);
[…] This post was mentioned on Twitter by HTMLfrp, wp_freak. wp_freak said: #wordpress Force custom post type to be private http://bit.ly/fHzJuW […]