Cuando se crea un custom post type en WordPress se puede desactivar la vista de publicación única (single-$posttype.php
) para este tipo de publicación específica. Existen distintas opciones para elegir si en su lugar se va a mostrar un error 404 o se va redirigir a la página de inicio.
La forma más sencilla de hacerlo es usando los siguientes argumentos al registrar el tipo de publicación personalizada.
Índice del artículo
Argumentos para controlar la vista de un tipo de contenido
'public'
'exclude_from_search'
'publicly_queryable'
'query_var'
‘public’
Argumento booleano opcional que controla como verán el post type los autores ('show_in_nav_menus'
, 'show_ui'
) y los lectores ('exclude_from_search'
, 'publicly_queryable'
). Su valor predeterminado es false
.
true
: implica'exclude_from_search' => false
,'publicly_queryable' => true
.false
: Implica'exclude_from_search' => true
,'publicly_queryable' => false
.
Si no se especifica ningún valor para 'exclude_from_search'
y 'publicly_queryable'
, heredan sus valores de 'public'
.
‘exclude_from_search’
Argumento booleano, site/?s=search-term
no incluirá las publicaciones de este tipo de publicación personalizada en sus resultados.
true
: NO se mostrarán publicaciones de este CPT en los resultados de búsqueda.false
: SI se mostrarán publicaciones de este CPT en los resultados de búsqueda.
Su valor predeterminado es el opuesto al declarado en el argumento 'public'
.
Si se quiere mostrar la lista de publicaciones asociadas a los términos de taxonomía, 'exclude_from_search'
se debe establecer en false
. Si se establece en true
, la página de taxonomía no podrá encontrar las publicaciones y su paginación generará un error 404 al intentar acceder a ellas mediante: site_domaine/?taxonomy_slug=term_slug
o site_domaine/taxonomy_slug/term_slug
‘publicly_queryable’
Argumento booleano, para definir si las consultas se podrán realizar desde el frontend del sitio web como parte de parse_request()
. Es un argumento opcional y su valor predeterminado es el mismo que el valor de 'public'
.
Las consultas son:
?post_type={post_type_key}
?{post_type_key}={single_post_slug}
?{post_type_query_var}={single_post_slug}
- También afecta cuando se usan reescrituras.
Si 'query_var'
está vacío, es nulo o falso, WordPress seguirá intentando interpretar la consulta en el frontend (vista y vista previa) de la web arrojando un error 404.
‘show_in_nav_menus’
Argumento booleano opcional, para definir si los posts de este tipo de contenido estarán disponibles en la página de configuración de menús de navegación. Su valor predeterminado corresponde al valor del argumento 'public'
.
‘query_var’
Argumento opcional que se usa para establecer la clave 'query_var'
para este tipo de publicación. Su valor predeterminado es true
y está establecido en $post_type
.
El parámetro 'query_var'
no tiene ningún efecto si el parámetro 'publicly_queryable'
está configurado como false
. query_var agrega la var de la consulta del tipo de publicación personalizada a la matriz incorporada query_vars para que WordPress la reconozca.
false
: – Desactiva el uso de la clave query_var. El CPT no se cargará en/?{query_var}={single_post_slug}
.string
:/?{query_var_string}={single_post_slug}
funcionará según lo previsto.
Conclusión
Generar un 404
'public' => false,
Redirigir a la Frontpage
'exclude_from_search' => false, 'publicly_queryable' => true, 'show_in_nav_menus' => false, 'query_var' => false,
Más información sobre los argumentos para registrar los Custom post types en WordPress.org.