web-dev-qa-db-fra.com

has_archive = false sur le type de publication par défaut

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
5
bpierre

Réponse tardive .


has_archive s'applique uniquement aux arguments rewrite.

En détail

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' );

Résumé:

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?.

4
kaiser