Qual è l'URL per un archivio di categoria?

7 feb 2011, 19:03:36
Visualizzazioni: 20.1K
Voti: 5

Se il mio URL di categoria è:

/blogs/category/foo

e il mio URL di archivio è:

/blogs/2011/02/

qual è l'URL per i blog 'foo' di febbraio 2011?

7
Commenti

/blogs/categoria/foo/?y=2011&monthnum=02

t31os t31os
7 feb 2011 23:23:30

@t31os: Se lo sposti in una risposta potremmo espanderlo con regole di rewrite, così avrà degli URL più eleganti!

Jan Fabry Jan Fabry
8 feb 2011 12:10:24

Non entrerebbero in conflitto eventuali regole scritte per un URL del genere con quelle delle sottocategorie? Penso sia per questo che non esistono regole del genere, come fai a distinguere tra un URL di categoria basato sulla data e uno che è semplicemente un URL di sottocategoria. Se vuoi, sei libero di includere il mio suggerimento nella tua risposta.

t31os t31os
8 feb 2011 12:33:49

@t31os: Mmm, dovrebbe essere possibile... Con un'espressione regolare non greedy, e dato che l'archivio data termina con cifre. Ci penserò su e magari tornerò con una risposta completa!

Jan Fabry Jan Fabry
8 feb 2011 14:47:26

@t31os: Ho ampliato la mia risposta con le regole di riscrittura che aggiungono la navigazione basata sulla data. Come pensavo, le regole di riscrittura non greedy rendono questo possibile.

Jan Fabry Jan Fabry
9 feb 2011 17:00:46

Ben fatto, sembra funzionare... :) +1

t31os t31os
10 feb 2011 15:43:08

Prova questo: ?y=2016&monthnum=01&orderby=date&order=ASC Questo è solo un esempio, modifica l'anno e il mese.

gfo95 gfo95
30 dic 2022 21:43:56
Mostra i restanti 2 commenti
Tutte le risposte alla domanda 2
1

Non esiste un archivio basato sulla data per una categoria. Le pagine /category/[slug]/ sono già "archivi", nel senso che mostrano vecchi articoli suddivisi su diverse pagine.

Le diverse pagine possono essere accessibili aggiungendo page/2/, page/3/, ... all'URL. I tag template per aggiungere questi link sono next_posts_link() e previous_posts_link().

Se vuoi aggiungere un livello basato sulla data ai tuoi archivi di categoria, puoi aggiungere una regola di rewrite per far corrispondere un anno, un mese opzionale e una paginazione opzionale.

add_filter( 'category_rewrite_rules', 'wpse8769_category_rewrite_rules' );
function wpse8769_category_rewrite_rules( $category_rules )
{
    global $wp_rewrite;
    // Questo potrebbe essere incorretto per permastruct complessi, testato solo in situazioni semplici
    $category_permastruct = str_replace( $wp_rewrite->rewritecode, $wp_rewrite->rewritereplace, $wp_rewrite->get_category_permastruct() );
    $category_permastruct = preg_replace( '|^/+|', '', $category_permastruct );

    $category_extra_rules = array(
        // Oppure suddividi questa regola in diverse regole di rewrite, se la regex è troppo complessa
        // I feed sono lasciati come esercizio per il lettore
        $category_permastruct . '/([0-9]{4})(/([0-9]{1,2}))?(/page/([0-9]+))?/?$' =>
            'index.php?category_name=$matches[1]&year=$matches[2]&monthnum=$matches[4]&paged=$matches[6]',
    );

    return $category_extra_rules + $category_rules;
}
7 feb 2011 19:06:50
Commenti

L'URL /category/[slug]/ visualizza solo i 10 post più recenti, senza collegamenti agli altri. C'è un modo per aggiungere la paginazione?

Bobby Jack Bobby Jack
7 feb 2011 20:28:39
2

D: Qual è l'URL per i blog 'foo' di febbraio 2011?

L'URL nel contesto del tuo sito è: /blogs/category/foo/?y=2011&monthnum=02

(Ho copiato spudoratamente questo da un commento di t31os, quindi i crediti vanno a lui per questo)

9 feb 2011 17:43:27
Commenti

Sfortunatamente, non funziona proprio come dovrebbe. Limita correttamente il mese a febbraio, ma il filtro per l'anno non ha effetto, quindi ottengo post da febbraio 2011, febbraio 2010, ecc.

Bobby Jack Bobby Jack
11 feb 2011 13:35:48

... e se cambio da "y=2011" a "year=2011", vengo reindirizzato a /blogs/2011/02/ perdendo così la categoria

Bobby Jack Bobby Jack
11 feb 2011 13:37:39