has_archive=false sul tipo di post predefinito

6 giu 2012, 14:42:46
Visualizzazioni: 16.3K
Voti: 6

Sul tipo di post predefinito post, perché la proprietà has_archive è uguale a FALSE?

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

Perché non ha senso avere un archivio per i post. FALSE è impostato per impostazione predefinita per tutti i tipi di post.

Eugene Manuilov Eugene Manuilov
6 giu 2012 15:00:16

I post hanno archivi, vengono visualizzati nella homepage con un'installazione fresca.

bpierre bpierre
6 giu 2012 15:31:38

has_archive Abilita gli archivi per il tipo di post. Utilizzerà $post_type come slug dell'archivio per impostazione predefinita. Valore predefinito: false Nota: Genererà le regole di riscrittura corrette se rewrite è abilitato. Utilizza anche rewrite per modificare lo slug utilizzato. Significa che dovrebbe esserci un archivio con lo slug http:://mysite.com/post/ - hai un archivio del genere?

Eugene Manuilov Eugene Manuilov
6 giu 2012 15:49:06

Capito, has_archive avrebbe dovuto chiamarsi has_archive_slug. Grazie.

bpierre bpierre
6 giu 2012 15:57:06
Tutte le risposte alla domanda 1
1

Risposta tardiva.


has_archive si applica solo agli argomenti rewrite.

In dettaglio

Se has_archive è impostato su true, allora $archive_slug verrà impostato sull'argomento rewrite['slug']. Se poi è impostato un argomento rewrite['with_front'], questo verrà anteposto. Il risultato verrà quindi aggiunto come regola di riscrittura:

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

Se feeds è impostato su true e anche has_archive, otterrai anche regole di riscrittura per i feed:

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

Lo stesso principio si applica a rewrite['pages']:

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

In sintesi:

Se non hai impostato has_archive su true, qualsiasi tentativo di aggiungere riscritture per feeds, pages o archivi si tradurrà in un grande ?.

14 giu 2012 14:06:24
Commenti

Con has_archive impostato su false puoi utilizzare una pagina personalizzata come archivio.

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