has_archive=false pe tipul de postare implicit

6 iun. 2012, 14:42:46
Vizualizări: 16.3K
Voturi: 6

Pe tipul de postare implicit post, de ce proprietatea has_archive este egală cu FALSE?

$type_obj = get_post_type_object('post');
var_dump($type_obj->has_archive); // FALSE
4
Comentarii

Pentru că nu are sens să existe arhivă pentru articole. FALSE este setat implicit pentru toate tipurile de postări.

Eugene Manuilov Eugene Manuilov
6 iun. 2012 15:00:16

Articolele au arhive, acestea sunt afișate pe pagina de start cu o instalare proaspătă.

bpierre bpierre
6 iun. 2012 15:31:38

has_archive Activează arhivele pentru tipul de postare. Va folosi implicit $post_type ca slug pentru arhivă. Implicit: false Notă: Va genera regulile corecte de rescriere dacă rewrite este activat. De asemenea, folosește rewrite pentru a schimba slug-ul utilizat. Înseamnă că ar trebui să existe o arhivă cu slug-ul http:://mysite.com/post/ - ai o astfel de arhivă?

Eugene Manuilov Eugene Manuilov
6 iun. 2012 15:49:06

Am înțeles, has_archive ar fi trebuit să se numească has_archive_slug. Mulțumesc.

bpierre bpierre
6 iun. 2012 15:57:06
Toate răspunsurile la întrebare 1
1

Răspuns întârziat.


has_archive se aplică doar pentru argumentele rewrite.

În detaliu

Dacă has_archive este setat la true, atunci $archive_slug va fi setat la argumentul rewrite['slug']. Dacă este setat și un argument rewrite['with_front'], acesta va fi adăugat la început. Rezultatul va fi apoi adăugat ca regulă de rescriere:

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

Dacă feeds este setat la true și has_archive de asemenea, vei obține și reguli de rescriere pentru fluxuri:

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

Același principiu se aplică și pentru rewrite['pages']:

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

Rezumat:

Dacă nu ai setat has_archive la true, orice încercare de a adăuga rescrieri pentru feeds, pages sau arhive va rezulta într-un mare ?.

14 iun. 2012 14:06:24
Comentarii

Cu has_archive setat la false poți utiliza o pagină personalizată ca arhivă.

Tobi G. Tobi G.
18 feb. 2021 16:53:16