Cum să modifici structura permalink pentru custom post type și taxonomiile sale?

20 sept. 2011, 14:35:16
Vizualizări: 35.9K
Voturi: 12

Aceasta este o repostare a unei întrebări anterioare, dar aș dori să intru în mai multe detalii acum pentru a putea rezolva complet problema.

Așadar, din nou, pentru postările (normale) modificarea permalink-ului este la fel de simplă ca accesarea Setări > Permalink și schimbarea acestuia în orice doriți, cum ar fi popularul %category%/%postname%.html. Totul funcționează. Dacă ar fi fost la fel de ușor și pentru tipurile de postări personalizate și taxonomiile lor.

Iată ce vreau să realizez.

  1. http://mywordpress.com/portfolio.html - Afișează toate postările din toate categoriile.
  2. http://mywordpress.com/portfolio/music/ - Afișează toate postările din această categorie.
  3. http://mywordpress.com/portfolio/music/trance/ - Afișează toate postările din această (sub)categorie.
  4. http://mywordpress.com/portfolio/music/trance/Tiesto.html - Afișează postarea.

Până acum am realizat următoarele:

  1. Mai întâi am creat un custom_post_type numit project și o taxonomy project_category.
  2. Am creat o pagină Portfolio și i-am dat un Template de Pagină care va lista toate postările cu post_type = project. Cum pot adăuga .html la permalink-ul paginilor? Acum face legătura către http://mywordpress.com/portfolio în timp ce eu vreau http://mywordpress.com/portfolio.html. Acest lucru ar trebui să rezolve prima problemă.
  3. Apoi lucrurile devin complicate, pentru că nu știm dinainte câte subcategorii sunt, poate nu există deloc. Deci structura pe care o căutăm este portfolio/(CALEA CATEGORIEI DE LA PĂRINTE LA COPIL)/post.html. Sunt încă blocat în acest punct. Cred că ar trebui cumva să obțin ultima categorie adăugată la cale și să o transmit către project_category, care ar trebui să ducă la un fișier taxonomy.php unde o pot procesa corespunzător.
  4. Nu m-am ocupat nici de acest aspect, dar ar trebui să aibă legătură cu %postname%.html la sfârșitul a ceva.

Sper că problema mea este clară și că există dezvoltatori curajoși care mă vor ajuta să rezolv această problemă care m-a ținut ocupat deja patru zile ÎNTREGI!

3
Comentarii

Soluția pe care am dat-o la ultima întrebare ar fi trebuit să funcționeze așa, dacă ai implementat-o corect. Singurul lucru este că nu poți obține partea de html

Manny Fleurmond Manny Fleurmond
20 sept. 2011 17:43:40

Da, dar era blocată la o cale specifică, deci doar categorie/subcategorie/pagină în timp ce s-ar putea să nu existe subcategorii sau chiar mai multe. Aceasta este mai dinamică.

Mark Mark
20 sept. 2011 18:58:51

Sau poate nu am implementat-o corect ;)

Mark Mark
20 sept. 2011 18:59:01
Toate răspunsurile la întrebare 3
1

Cred că am găsit o soluție. Nu știu dacă aceasta este cea mai bună metodă pentru a realiza acest lucru, dar momentan este singura care pare să funcționeze.

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');

function mmp_rewrite_rules($rules) {
    $newRules                               = array();
    $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]';
    $newRules['portfolio/(.+)/?$']          = 'index.php?project_category=$matches[1]'; 

    return array_merge($newRules, $rules);
}


add_filter('request', 'mmp_rewrite_request');

function mmp_rewrite_request($vars) {
    if (isset($vars['project_category'])) {
        if (strpos($vars['project_category'], '/') !== false) {
            $categories = explode('/', $vars['project_category']);
            $vars['project_category'] = $categories[count($categories) - 1];
        }
    }

    return $vars;
}
20 sept. 2011 17:28:13
Comentarii

Filtrul de cerere este o modalitate bună de a filtra dacă solicităm o categorie (de fapt un termen) și un articol. Acesta permite adăugarea unei singure reguli de rescriere și obținerea paginii articolului, indiferent dacă articolul se află într-o categorie, o subcategorie sau deloc.

ZalemCitizen ZalemCitizen
30 oct. 2018 13:14:54
0

După ce mi-am bătut capul ore întregi, am găsit acest plugin foarte util.

https://wordpress.org/plugins/custom-post-type-permalinks/

Mai jos este captura de ecran cu opțiunile pe care le oferă.

Opțiuni permalinkuri pentru tipuri personalizate de articole în WordPress

7 apr. 2016 04:57:39
0

2 Metode Diferite:

*Vezi notele de la sfârșitul acestui articol.


de exemplu, dorești să ai o structură de permalinkuri ca aceasta:
/CATEGORIE_PRINCIPALA/SUBCATEGORIE_2/Alta_SUBCATEGORIE/articolul-meu

În primul rând, poate fi necesar să setezi permalinkurile la /%category%/%postname%. Apoi...




METODA 1:

creează categorii STANDARD (CATEGORIE_PRINCIPALA, SUBCATEGORIE_1, și așa mai departe..) și înregistrează POSTUL CUSTOM, incluzând acest parametru:

'taxonomies'    => array('category'..)

și folosește aceste coduri pentru a schimba permalinkurile: https://wordpress.stackexchange.com/a/195643/33667
Apoi, după publicarea unui POST CUSTOM (dacă este atașat unei categorii), URL-ul va fi:
example.com/CATEGORIE_PRINCIPALA/SUBCATEGORIE_1/articolul-meu



METODA 2:

(p.s. această metodă nu este recomandată dacă intenționezi să publici sute sau mii de articole)

înregistrează POSTUL CUSTOM (numit CATEGORIE_PRINCIPALA), incluzând acești parametri:

    "supports"      => array('page-attributes'......
    "hierarchical"  => true,

apoi, publică postări custom astfel: Exemplu structură ierarhică custom post
(adică publică mai multe postări custom, numite SUBCATEGORIE_2, SUBCATEGORIE_1... După aceea, când publici un alt articol, alege SUBCATEGORIE_2 ca părinte.





p.s.
1) Dacă ești începător, revizuiește: Înregistrarea POSTULUI CUSTOM și Înregistrarea POSTULUI CUSTOM cu TAXONOMIE
2) dacă vei avea nevoie de funcționalitate de căutare pentru nivelurile subordonate, folosește interogare de căutare personalizată

10 nov. 2014 12:23:37