Rimuovere lo slug nell'URL della tassonomia
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.
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.

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

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

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/

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.

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.

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

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.

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.

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/

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.
