Rimuovere una tassonomia dall’url

siti web trentoOggi parliamo di tassonomie, in particolare le tassonomie di wordpress.

Ma cosa sono le tassonomie?

Per chi utilizza wordpress in modalità utente non gli sarà capitato spesso di sentir nominare questa parola, diciamo che per farla semplice, come dice lo stesso codex di wordpress, una tassonomia è un modo di classificare o raggruppare le cose. Nel caso di wordpress, nello specifico è un sistema per raggruppare post.

 

 

 

All’interno di wordpress esistono già impostate di default al momento della vostra prima installazione 3 tipologie di tassonomie:

– category

– post_tag

– link_category

Quella che forse avrete avuto più la possibilità di notare è la tassonomia “category” che potete notare in alcuni siti wordpress nell’url dei post /category/name

E’ possibile però creare delle tassonomie personalizzate e alcune volte è possibile incontrarle nel caso di template particolari.

Un esempio di tassonomia personalizzata è presente in alcuni template che gestiscono in maniera separata il portfolio, se noterete infatti anche nell’url delle pagine dedicate al portfolio potrebbe comparire appunto lo “slug”: /portfolio/nome

Ma cosa si può fare se noi non vogliamo che compaia la tassonomia all’interno dell’url delle nostre pagine?

La soluzione è molto semplice ed immediata e si può compiere attraverso il nostro ormai noto file del template “functions.php” di cui abbiamo già parlato precedentemente.

All’interno del nostro file “functions.php” del template attivo sul nostro sito dovremo aggiungere il seguente codice:

function vipx_remove_cpt_slug( $post_link, $post, $leavename ) {


if ( '<nome-tassonomia>' != $post->post_type 
|| 'publish' != $post->post_status ) {

return $post_link;
}

$post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );

return $post_link;
}

add_filter( 'post_type_link', 'vipx_remove_cpt_slug', 10, 3 );
function vipx_parse_request_tricksy( $query ) {

if ( ! $query->is_main_query() )
return;

if ( 2 != count( $query->query ) || ! isset( $query->query[‘page’] ) ) {
return;
}

if ( ! empty( $query->query[‘name’] ) ) {
$query->set( ‘post_type’, array( ‘post’, ‘<nome-tassonomia>‘, ‘page’ ) );
}
}
add_action( ‘pre_get_posts’, ‘vipx_parse_request_tricksy’ );

Dove andremo a scrivere al posto di <nome-tassonomia> lo slug che vogliano nascondere, ed il gioco è fatto.

A questa pagina potete recuperare volendo tutta l’analisi del codice sopra indicato.

Questa è una soluzione molto utile nel caso per esempio si usasse un child theme, inserendo infatti questo codice all’interno del file functions.php del nostro child theme, nel caso venisse aggiornato il tema padre la variazione non verrebbe soprascritta da eventuali aggiornamenti ma mantenuta nel tempo.

Cosa ne pensate? Vi è stato utile questo articolo?

 

Francesca Roccabruna

Tag: , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *