Criei um tipo de postagem personalizado:
register_post_type('sample_post_type',array(
'labels' => array(
'name' => _x('Sample Posts', 'post type general name'),
'singular_name' => _x('Sample Post', 'post type singular name')
),
'public' => true,
'show_in_nav_menus' => false,
'exclude_from_search' => true
));
Como posso desativar a exibição de postagem única para esse tipo de postagem específico? Exibir um 404 simples é bom ou redirecionar para a página inicial. Isso está dentro de um plug-in, então não consigo criar um arquivo single-sample_post_type.php para configurar uma página vazia.
fonte
get_current_user_id()
0.is_singular('post-type-slug')
naif()
condição em vez de 2 condições?Apenas definindo o argumento
quando você chama register_post_type ()
fonte
Uma maneira mais simples de fazer isso é passar os seguintes argumentos ao registrar o Tipo de postagem personalizado
fonte
publically_querable
ser verdadeiro para que os Arquivos de tipo de postagem funcionem.1. Do seu arquivo de funções.
Dois. No seu arquivo single.cpt.php:
fonte
single-cpt_name.php
arquivo personalizado, não poderá fazê-lo. Se você colocar a função em um arquivo de plug-in simples, poderá ativar / desativar sem editar nenhum arquivo.Trabalhando com a resposta realmente boa de Sven, reescrevi sua função para facilitar a adição de vários tipos de postagem usando
in_array()
a instrução if e, em seguida, redirecionando para a página de arquivo em vez da página inicial.(a propósito, acho que a configuração
query_var
e / oupublically_queryable
false desativará não apenas as visualizações únicas, mas também a visualização de arquivo nativo, substituindo'has_archive' => true
. Nesse caso, você ainda pode configurar um WP_query personalizado e criar sua própria página de arquivo, em um modelo, mas a consulta principal não fará mais isso, fará?)fonte
Testou todos os mencionados acima e a solução real é mais simples do que os redirecionamentos sugeridos.
Para que o arquivo esteja acessível e liste os itens, a postagem única não esteja acessível e o redirecionamento automático para o conjunto 404
ao registrar seu CPT. Se você definir
publicly_queryable
como falso, seus arquivos serão redirecionados para casa, qualquer outra combinação não funcionará. Definaquery_var
como false e é isso.Aqui está a CPT completa https://gist.github.com/danyj/bfd038d3c8d578548c4d700bd0a7942a
consulte a linha 50 https://gist.github.com/danyj/bfd038d3c8d578548c4d700bd0a7942a#file-thz_cpt_items_single_view_redirect-php-L50
como indicado aqui
https://codex.wordpress.org/Function_Reference/register_post_type
fonte
Caso você deseje desativar completamente a exibição única de tipo de postagem personalizada no front-end, mas poder exibir a página do arquivo, as coisas estão ficando um pouco complicadas.
Definir
publicly_queryable
afalse
ourewrite
afalse
impedirá para a exibição de ambos visão única e arquivo. Não há sinalizador nosregister_post_type
argumentos da função para impedir a criação de apenas regras de reescrita de exibição única.https://github.com/WordPress/WordPress/blob/5.2.3/wp-includes/class-wp-post-type.php#L540
No entanto, você pode remover a marca de reescrita depois de registrar seu tipo de postagem, o que deixará as regras de reescrita da visualização de arquivo intocadas, mas removerá apenas as regras de reescrita da visualização única.
Outro bônus é que, a partir de agora, você poderá criar páginas simples do WordPress usando a estrutura permanente de tipo de postagem de evento (
event/simple-page
), que pode ser útil em sites complexos.Lembre-se de liberar regras de reescrita após a modificação do código.
fonte