has_archive = false no tipo de postagem padrão

5

No tipo post padrão, por que a propriedade has_archive é igual a FALSE ?

$type_obj = get_post_type_object('post');
var_dump($type_obj->has_archive); // FALSE
    
por bpierre 06.06.2012 / 13:42

1 resposta

4

Resposta tardia .

has_archive aplica-se apenas aos argumentos rewrite .

Em detalhes

Se has_archive estiver definido como true , o $archive_slug será definido para o argumento rewrite['slug'] . Se, então, um rewrite['with_front'] arg estiver definido, este será pré-anexado. O resultado disso será adicionado como regra de reescrita:

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

Se feeds estiver definido como verdadeiro e has_archive também, você também receberá regras reescritas 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' );

O mesmo princípio se 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' );

Resumida:

Se você não tiver has_archive definido como true , qualquer tentativa de adicionar reescritas para feeds , pages ou arquivos terminará com um grande ? .

    
por kaiser 14.06.2012 / 13:06