Sur le type par défaut post
, pourquoi la propriété has_archive
est-elle égale à FALSE
?
$type_obj = get_post_type_object('post');
var_dump($type_obj->has_archive); // FALSE
Réponse tardive .
has_archive
s'applique uniquement aux arguments rewrite
.
Si has_archive
est défini sur true
, alors $archive_slug
sera défini sur l'argument rewrite['slug']
. Si alors un rewrite['with_front']
arg est défini, celui-ci sera ajouté au début. Le résultat de ceci sera alors ajouté comme règle de réécriture:
add_rewrite_rule( "{$archive_slug}/?$", "index.php?post_type=$post_type", 'top' );
Si feeds
a pour valeur true et has_archive
également, vous obtiendrez également des règles récrites pour les flux:
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' );
Le même principe s'applique pour rewrite['pages']
:
add_rewrite_rule( "{$archive_slug}/{$wp_rewrite->pagination_base}/([0-9]{1,})/?$", "index.php?post_type=$post_type" . '&paged=$matches[1]', 'top' );
Si vous n'avez pas has_archive
défini sur true
, toute tentative d'ajouter des réécritures pour feeds
, pages
ou les archives aboutira à un gros?
.