Eliminarea slug-ului din URL-ul taxonomiei

13 feb. 2012, 07:06:50
Vizualizări: 28.7K
Voturi: 8

Mă întreb cum pot elimina slug-urile din anumite URL-uri. Folosesc un tip de postare personalizată numit exhibitors și câteva taxonomii pentru a defini acești expozanți (de exemplu: featured-guests, publishers etc.):

În prezent am acest URL: http://thisurl.com/exhibitor_filters/featured-guests/

Aș dori să obțin acest format: http://thisurl.com/featured-guests/

M-am jucat cu opțiunile rewrite / slug în WordPress, dar până acum fără succes.

Sugestii?

Mulțumesc!

-Actualizare-

Momente amuzante, acum primesc erori 404 pentru tot ce implică tipuri de postări personalizate și termeni de taxonomie. Voi încerca mai întâi să rezolv această problemă care generează atâtea erori... mulțumesc pentru sugestiile generale, băieți.

0
Toate răspunsurile la întrebare 5
2

În mod implicit, acest lucru nu este posibil, iar utilizând API-urile de înregistrare CPT și Taxonomii Personalizate, nu este posibil.

Și există un motiv bun pentru asta.

Totul are legătură cu conflictele de permalink-uri și slug-uri, precum și cu eliminarea ambiguității. Recunoaștem că există cazuri în care URL-uri unice care nu se suprapun niciodată nu sunt permise de sistem din acest motiv (fals negativ).

Așadar, vă recomand să alegeți un înlocuitor pentru 'exhibitor_filters', cum ar fi 'exhibitors' sau 'filters', și să îl utilizați ca slug în opțiunea de rescriere la înregistrare.

Dacă totuși doriți să faceți așa cum doriți, va trebui să adăugați reguli de rescriere. Acest lucru poate fi problematic, deoarece riscați conflicte reale (încărcăm pagina 'despre' sau termenul exhibitor_filter 'despre'?), iar ordinea și prioritățile hook-urilor vor juca un rol important.

De exemplu:

function ex_rewrite( $wp_rewrite ) {

    $feed_rules = array(
        '(.+)'    =>  'index.php?exhibitor_filter='. $wp_rewrite->preg_index(1)
    );

    $wp_rewrite->rules = $wp_rewrite->rules + $feed_rules;
}
// reîmprospătați/resetați permalink-urile în panoul de administrare dacă acest cod este modificat în orice fel
add_filter( 'generate_rewrite_rules', 'ex_rewrite' );

Codul de mai sus va funcționa pentru termeni individuali, dar va trebui modificat pentru URL-uri ierarhice și taxonomii.

Plasați codul în fișierul functions.php al temei dumneavoastră sau în plugin-ul asociat temei.

Avertisment: Va trebui să fiți atenți să nu aveți permalink-uri conflictuale și să fiți conștienți de ordinea în care regulile sunt aplicate. Folosiți plugin-ul Monkeyman Rewrite Analyzer pentru a testa acest lucru. Ați fost avertizați.

2 iul. 2012 16:07:59
Comentarii

Încă funcționează acest lucru? Are nevoie de un fel de return? Nu pare să facă nimic pentru mine.

Garconis Garconis
12 mai 2021 20:25:45

da, dar trebuie să-l modifici pentru cazul tău specific, acest răspuns a fost scris pentru OP, așa că un simplu copy paste nu va funcționa pentru tine decât dacă tipul tău personalizat de postare și taxonomiile au exact aceleași nume ca în cazul postării originale. Acest răspuns nu este copiat. De asemenea, ia în considerare precizările din răspuns

Tom J Nowell Tom J Nowell
13 mai 2021 13:50:55
0

Există un plugin care vă va permite să eliminați cu ușurință slug-ul de taxonomie cu doar câteva clicuri. Totuși, așa cum a menționat Tom, fiți atenți, de exemplu, să nu denumiți doi termeni de taxonomie diferiți la fel, altfel totul se va defecta.

URL-ul plugin-ului este http://wordpress.org/extend/plugins/wp-htaccess-control/

31 iul. 2012 04:34:14
1

Ar trebui să poți specifica acest lucru din secțiunea de permalink-uri. Poți seta acest lucru printr-un permalink personalizat, dar se pare că una dintre opțiunile implicite "numele articolului" ar trebui să funcționeze pentru tine. Această opțiune poate fi găsită în setări, la secțiunea permalink-uri din panoul de administrare WordPress.

13 feb. 2012 21:06:48
Comentarii

Acesta nu este un nume de postare, featured-guests este un termen de taxonomie. Problema pe care o am este legată de erorile 404 pentru custom-post-types și taxonomy-terms.

Nadine Nadine
14 feb. 2012 00:57:39
0

Am găsit răspunsul aici și am folosit codul din comentariile lui Jonathan Brinley. Trebuie să declari mai întâi taxonomia "exhibitor_filters", iar apoi CPT-ul tău, setând slug-ul acestuia la %exhibitor_filters%.

Apoi, toate CPT-urile și termenii tăi vor funcționa corect, inclusiv legăturile către arhivele de termeni. În cazul meu, am eliminat slug-ul CPT-ului din permalink-uri folosind %taxo% în slug-ul CPT-ului, și a funcționat, cu excepția arhivelor de termeni, care încă afișează slug-ul CPT-ului, dar în cazul tău pare că asta dorești.

Se pare că vrei pagini de arhivă care să afișeze toate postările personalizate din filtrul expozantului "featured-guests".

Succes.

2 iul. 2012 15:14:17
7
-1

Ai făcut:

'rewrite' = > array(
    'slug' => 'featured-guests',
    'with_front' => false )

și doar adaugă asta în register_taxonomy.

13 feb. 2012 07:22:35
Comentarii

Asta îmi dă o eroare internă de server.

Nadine Nadine
13 feb. 2012 08:15:07

Există vreo modalitate de a trece ceva similar cu un slug gol? Dacă îl las gol, primesc și eu erori de server.

Nadine Nadine
13 feb. 2012 08:22:02

Pot să văd codul complet, doar ca să mă asigur că este implementat corect. Din câte știu eu, dacă funcția eșuează, nu ar trebui să arunce o eroare 500.

Evan Yeung Evan Yeung
13 feb. 2012 20:37:49

register_taxonomy('exhibitor_filters','exhibitors', array( 'hierarchical' => true, 'label' => 'Tipul Expozantului', 'query_var' => true, 'rewrite' = > array( 'slug' => 'featured-guests', 'with_front' => false )

)

);

Nu cred că asta e corect. Featured-guests este un termen asociat cu exhibitor_filters. Vreau doar să nu apară partea de exhibitor_filters într-un link. Poate că nu este posibil. Probabil voi face o pagină modificată sau ceva de genul.

Nadine Nadine
14 feb. 2012 01:02:04

Am observat că primești erori 404 cu structura ta de permalink acum. Ai reîmprospătat structura de rewrite? http://wpengineer.com/2044/custom-post-type-and-permalink/

Evan Yeung Evan Yeung
14 feb. 2012 01:08:11

Da. Nimic încă. Am șters baza de date și am început de la zero. Rezultat: 2 tipuri de postări refuză să-și folosească arhivele și 2 tot dau 404.

Nadine Nadine
14 feb. 2012 06:07:22

with_front nu este destinat pentru acest lucru, este pentru altceva cu totul diferit

Tom J Nowell Tom J Nowell
2 iul. 2012 15:53:23
Arată celelalte 2 comentarii