デフォルトのpost
型でhas_archive
プロパティがFALSE
と等しいのはなぜですか
$type_obj = get_post_type_object('post');
var_dump($type_obj->has_archive); // FALSE
遅れた回答 。
has_archive
はrewrite
引数にのみ適用されます。
has_archive
がtrue
に設定されている場合、$archive_slug
はrewrite['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_archive
をtrue
に設定していない場合は、feeds
、pages
、またはアーカイブの書き換えを追加しようとすると、大きな?
になります。