Care este URL-ul pentru o arhivă de categorie?

7 feb. 2011, 19:03:36
Vizualizări: 20.1K
Voturi: 5

Dacă URL-ul categoriei mele este:

/blogs/category/foo

și URL-ul arhivei mele este:

/blogs/2011/02/

care este URL-ul pentru articolele din categoria 'foo' din februarie 2011?

7
Comentarii

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

t31os t31os
7 feb. 2011 23:23:30

@t31os: Dacă muti asta într-un răspuns, am putea extinde cu reguli de rescriere, pentru a avea URL-uri mai frumoase!

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

Nu s-ar ciocni orice reguli scrise pentru un astfel de URL cu regulile pentru sub-categorii? Cred că de aceea nu există astfel de reguli, cum poți diferenția între un URL de categorie bazat pe dată și unul care este pur și simplu un URL de sub-categorie. Ești binevenit să incluzi sugestia mea în propriul tău răspuns dacă dorești.

t31os t31os
8 feb. 2011 12:33:49

@t31os: Hmm, ar trebui să fie posibil... Cu un regex non-greedy, și pentru că arhiva de date se termină cu cifre. O să mă gândesc la asta și poate voi reveni cu un răspuns complet!

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

@t31os: Am extins răspunsul meu cu reguli de rescriere care adaugă navigarea bazată pe date. Cum am crezut, regulile non-greedy de rescriere fac acest lucru posibil.

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

Foarte bine făcut, se pare că funcționează... :) +1

t31os t31os
10 feb. 2011 15:43:08

Încearcă asta: ?y=2016&monthnum=01&orderby=date&order=ASC Acesta este doar un exemplu, modifică anul și luna.

gfo95 gfo95
30 dec. 2022 21:43:56
Arată celelalte 2 comentarii
Toate răspunsurile la întrebare 2
1

Nu există o arhivă bazată pe dată pentru o categorie. Paginile /category/[slug]/ sunt deja "arhive", în sensul că afișează postări vechi pe diferite pagini.

Diferitele pagini pot fi accesate adăugând page/2/, page/3/, ... la URL. Etichetele de șablon pentru a adăuga aceste linkuri sunt next_posts_link() și previous_posts_link().

Dacă dorești să adaugi un strat bazat pe dată la arhivele de categorii, poți adăuga o regulă de rescriere pentru a potrivi un an, lună opțională și paginare opțională.

add_filter( 'category_rewrite_rules', 'wpse8769_category_rewrite_rules' );
function wpse8769_category_rewrite_rules( $category_rules )
{
    global $wp_rewrite;
    // Acest lucru poate fi incorect pentru structuri permalink complexe, testat doar în situații simple
    $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(
        // Sau poți împărți acest lucru în diferite reguli de rescriere, dacă regex-ul este prea complicat
        // Feed-urile sunt lăsate ca exercițiu pentru cititor
        $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
Comentarii

URL-ul meu /category/[slug]/ afișează doar cele mai recente 10 articole, fără link-uri către altele. Există vreo modalitate de a le pagina?

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

Î: care este URL-ul pentru blogurile 'foo' din februarie 2011?

URL-ul în contextul site-ului tău este: /blogs/category/foo/?y=2011&monthnum=02

(Am copiat acest răspuns direct de la un comentariu al lui t31os, așadar creditul îi revine lui pentru această soluție)

9 feb. 2011 17:43:27
Comentarii

Din păcate, asta nu funcționează chiar așa cum trebuie. Limitează luna la februarie OK, dar filtrul pentru an nu are efect, așa că ajung cu articole din feb 2011, feb 2010, etc.

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

... și dacă schimb de la "y=2011" la "year=2011", sunt redirecționat către /blogs/2011/02/ pierzând astfel categoria

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