Rimuovere lo slug nell'URL della tassonomia

13 feb 2012, 07:06:50
Visualizzazioni: 28.7K
Voti: 8

Mi chiedevo come poter rimuovere gli slug da alcuni URL. Sto usando un custom post type chiamato exhibitors e alcune tassonomie per definire questi espositori (es: featured-guests, publishers ecc.):

Al momento ho questo: http://thisurl.com/exhibitor_filters/featured-guests/

Vorrei ottenere questo: http://thisurl.com/featured-guests/

Ho provato a modificare il rewrite / slug in WordPress, ma finora senza successo.

Suggerimenti?

Grazie!

-Modifica-

Bei tempi, ora sto ottenendo errori 404 per tutto ciò che coinvolge i custom post type e i termini delle tassonomie. Cercherò almeno di far smettere questa cosa di generare così tanti errori... grazie per i vostri suggerimenti generali ragazzi.

0
Tutte le risposte alla domanda 5
2

Questo di default non è possibile, e utilizzando le API di registrazione dei CPT e delle Tassonomie Personalizzate, non è fattibile.

E per una buona ragione.

Ha tutto a che fare con i conflitti tra permalink e slug, e con l'eliminazione di ambiguità. Bisogna ammettere che ci sono casi in cui URL univoci che non si sovrappongono mai non sono consentiti dal sistema per questo motivo (falsi negativi).

Quindi ti consiglio di scegliere una sostituzione per 'exhibitor_filters' come 'exhibitors', o 'filters' e usarlo come tuo slug nell'opzione rewrite durante la registrazione.

Se davvero vuoi farlo nel modo che desideri, tuttavia, dovrai aggiungere regole di rewrite. Questo può essere problematico, poiché corri il reale rischio di conflitti (carichiamo la pagina 'about' o il termine exhibitor_filter 'about'?), e l'ordine e le priorità dei tuoi hook avranno un ruolo importante.

Ad esempio:

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;
}
// aggiorna/flusha i permalink nella dashboard se questo viene modificato in qualsiasi modo
add_filter( 'generate_rewrite_rules', 'ex_rewrite' );

Il codice sopra funzionerà per i singoli termini, sebbene necessiterà di modifiche per URL e tassonomie gerarchiche.

Inserisci il codice nel functions.php del tuo tema, o nel plugin associato al tuo tema.

Attenzione: Dovrai fare attenzione a non avere permalink in conflitto, e dovrai essere consapevole dell'ordine in cui le regole vengono applicate. Usa il plugin monkeyman rewrite analyser per testare questo. Sei stato avvisato.

2 lug 2012 16:07:59
Commenti

Funziona ancora? Ha bisogno di qualche tipo di return? Non sembra fare nulla nel mio caso.

Garconis Garconis
12 mag 2021 20:25:45

sì, ma devi modificarlo per il tuo caso d'uso specifico, questa risposta è stata scritta per l'OP, quindi un semplice copia e incolla non funzionerà a meno che i tuoi custom post type e tassonomie non abbiano nomi identici a quelli del post originale. Questa risposta non è un copia e incolla già pronto. Tieni presente anche le avvertenze nella risposta

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

Esiste un plugin che ti permetterà facilmente di rimuovere lo slug della tassonomia con pochi clic. Ad ogni modo, come ha detto Tom, fai attenzione a non nominare due termini di tassonomie diverse allo stesso modo, altrimenti tutto si romperà.

L'URL del plugin è http://wordpress.org/extend/plugins/wp-htaccess-control/

31 lug 2012 04:34:14
1

Dovresti essere in grado di specificare questo dalla sezione dei permalink. Puoi impostarlo tramite un permalink personalizzato, ma sembra che una delle opzioni predefinite "nome articolo" dovrebbe funzionare per te. Questo si trova in impostazioni, permalink nel backend di WordPress.

13 feb 2012 21:06:48
Commenti

Questo non è un nome di post, featured-guests è un termine di tassonomia. Il problema che sto riscontrando sono errori 404 con i custom-post-types e i taxonomy-terms.

Nadine Nadine
14 feb 2012 00:57:39
0

Ho trovato quella risposta qui e ho utilizzato il codice nei commenti di Jonathan Brinley. Dovresti prima dichiarare la tua tassonomia "exhibitor_filters", e poi il tuo CPT, impostando il suo slug a %exhibitor_filters%.

Così tutti i tuoi CPT e termini funzioneranno correttamente, inclusi i link agli archivi dei termini. Nel mio caso ho rimosso lo slug del CPT dai permalink utilizzando %taxo% nello slug del CPT, e ha funzionato tranne che per l'archivio dei termini, che mostra ancora lo slug del CPT, ma nel tuo caso sembra essere ciò che vuoi.

Sembra che tu voglia pagine di archivio, che mostrino tutti i custom post nel filtro espositore "featured-guests".

Buona fortuna.

2 lug 2012 15:14:17
7
-1

Hai fatto:

'rewrite' = > array(
    'slug' => 'ospiti-in-evidenza',
    'with_front' => false )

e aggiungilo semplicemente al tuo register_taxonomy.

13 feb 2012 07:22:35
Commenti

Questo mi dà un errore interno del server.

Nadine Nadine
13 feb 2012 08:15:07

C'è un modo per passare qualcosa come uno slug vuoto? Se lo lascio vuoto, ottengo anche errori del server.

Nadine Nadine
13 feb 2012 08:22:02

Posso vedere il codice completo, giusto per assicurarmi che sia implementato correttamente. Per quanto ne so, se la funzione fallisce non dovrebbe generare un errore 500.

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

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

)

);

Non penso sia corretto. featured-guests è un termine associato a exhibitor_filters. Voglio solo che non mostri la parte exhibitor_filters in un link. Forse non è possibile. Probabilmente farò un hack per una pagina o qualcosa del genere.

Nadine Nadine
14 feb 2012 01:02:04

Ho notato che stai ricevendo errori 404 con la tua struttura di permalink ora. Hai resettato la struttura di riscrittura? http://wpengineer.com/2044/custom-post-type-and-permalink/

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

Sì. Niente ancora. Ho cancellato il mio database e sono partito da zero. Risultato: 2 tipi di post si rifiutano di usare i loro archivi e 2 danno ancora 404.

Nadine Nadine
14 feb 2012 06:07:22

with_front non è pensato per questo, serve a un altro scopo completamente diverso

Tom J Nowell Tom J Nowell
2 lug 2012 15:53:23
Mostra i restanti 2 commenti