web-dev-qa-db-ja.com

デフォルトの投稿タイプではhas_archive = false

デフォルトのpost型でhas_archiveプロパティがFALSEと等しいのはなぜですか

$type_obj = get_post_type_object('post');
var_dump($type_obj->has_archive); // FALSE
5
bpierre

遅れた回答


has_archiverewrite引数にのみ適用されます。

詳細に

has_archivetrueに設定されている場合、$archive_slugrewrite['slug']引数に設定されます。それからrewrite['with_front']引数が設定されている場合、これが先頭に追加されます。この結果は書き換えルールとして追加されます。

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

feedsがtrueに設定され、has_archiveも設定されている場合は、フィードの規則も書き換えられます。

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

同じ原則がrewrite['pages']にも当てはまります。

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

要約する:

has_archivetrueに設定していない場合は、feedspages、またはアーカイブの書き換えを追加しようとすると、大きな?になります。

4
kaiser