Por qué has_archive=false en el tipo de post por defecto

6 jun 2012, 14:42:46
Vistas: 16.3K
Votos: 6

En el tipo de publicación por defecto post, ¿por qué la propiedad has_archive es igual a FALSE?

$type_obj = get_post_type_object('post');
var_dump($type_obj->has_archive); // FALSO
4
Comentarios

Porque no tiene sentido tener un archivo para entradas. FALSE está establecido por defecto para todos los tipos de entrada.

Eugene Manuilov Eugene Manuilov
6 jun 2012 15:00:16

Las entradas tienen archivos, se muestran en la página de inicio con una instalación limpia.

bpierre bpierre
6 jun 2012 15:31:38

has_archive Habilita archivos para tipos de entrada. Usará $post_type como slug de archivo por defecto. Por defecto: false Nota: Generará las reglas de reescritura adecuadas si rewrite está habilitado. También usa rewrite para cambiar el slug utilizado. Significa que debería haber un archivo con el slug http:://mysite.com/entrada/ - ¿tienes ese archivo?

Eugene Manuilov Eugene Manuilov
6 jun 2012 15:49:06

Entendido, has_archive debería haberse llamado has_archive_slug. Gracias.

bpierre bpierre
6 jun 2012 15:57:06
Todas las respuestas a la pregunta 1
1

Respuesta tardía.


has_archive aplica solo para los argumentos de rewrite.

En detalle

Si has_archive está configurado como true, entonces $archive_slug se establecerá según el argumento rewrite['slug']. Si además está configurado un argumento rewrite['with_front'], este se antepondrá. El resultado de esto se añadirá como regla de reescritura:

add_rewrite_rule( "{$archive_slug}/?$", "index.php?post_type=$post_type", 'top' );

Si feeds está configurado como true y has_archive también, entonces también obtendrás reglas de reescritura para feeds:

add_rewrite_rule( "{$archive_slug}/feed/$feeds/?$", "index.php?post_type=$post_type" . '&feed=$matches[1]', 'top' );
add_rewrite_rule( "{$archive_slug}/$feeds/?$", "index.php?post_type=$post_type" . '&feed=$matches[1]', 'top' );

El mismo principio aplica para rewrite['pages']:

add_rewrite_rule( "{$archive_slug}/{$wp_rewrite->pagination_base}/([0-9]{1,})/?$", "index.php?post_type=$post_type" . '&paged=$matches[1]', 'top' );

En resumen:

Si no tienes has_archive configurado como true, entonces cualquier intento de añadir reescrituras para feeds, pages o archivos terminará con un gran ?.

14 jun 2012 14:06:24
Comentarios

Con has_archive en false puedes usar una página personalizada como archivo.

Tobi G. Tobi G.
18 feb 2021 16:53:16