WordPress: eliminare dall’URL la categoria madre mostrando solo la sottocategoria

WordPress integra un sistema di gestione dei permalink semplice ed intuitivo, che consente di creare URL semplici e SEO-friendly per le nostre pagine, i nostri archivi ed i nostri post.

Se il tuo sito o blog basato su WordPress ospita numerose categorie con sistemi gerarchici, dunque sottocategorie, potresti avere permalink troppo lunghi e complessi sia nelle pagine archivio delle categorie sia nei singoli post, a seconda della struttura che utilizzi.

Facciamo degli esempi concreti per rendere meglio l’idea. Ipotizza di avere una categoria madre, al suo interno una sottocategoria, che a sua volta ha una sottocategoria, l’indirizzo web della pagina contenente gli articoli dell’ultima sottocategoria sarà:

nomesito.est/categoria-madre/sottocategoria/sottocategoria-2/

E se utilizzi la struttura %category%/%postname% il risultato sarà:

nomesito.est/categoria-madre/sottocategoria/sottocategoria-2/nome-post

Se è vero che un sistema ben strutturato di categorie aiuta a tenere ordinati i contenuti ed  migliorare la navigabilità del sito, è anche vero che in certi casi lasciando queste impostazioni si rischia di ottenere permalink esageratamente lunghi, difficili da ricordare e poco SEO-friendly.

Fortunatamente esiste una soluzione facile da implementare, che non richiede neppure l’utilizzo di plugin particolari e pesanti.

Mostrare solo l’ultima sottocategoria nel permalink

Se vuoi che nei permalink del tuo sito o blog venga visualizzata soltanto l’ultima delle categorie puoi aggiungere queste righe di codice in due diversi modi:

  • Tramite il plugin personalizzato per inserire funzioni, realizzarlo è molto semplice e porta tantissimi vantaggi. (opzione consigliata).
  • Inserendo il codice che segue all’interno del file functions.php del tema in uso (meglio se tema child)

Il codice da inserire è:

add_filter( 'post_link', 'remove_parent_cats_from_link', 10, 3 );
function remove_parent_cats_from_link( $permalink, $post, $leavename ){
    $cats = get_the_category( $post->ID );
    if ( $cats ) {
        $category = $cats[0]->slug;
        if ( $parent = $cats[0]->parent ) {
            $parentcats = get_category_parents( $parent, false, '/', true );
            $permalink = str_replace( $parentcats, '', $permalink );
        }
    }
    return $permalink;
}

 

In questo modo avrai, nel caso dell’archivio di categoria:

nomesito.est/sottocategoria-2/

E se utilizzi la struttura %category%/%postname% il risultato sarà:

nomesito.est/sottocategoria-2/nome-post

Se ha domande o ti va di dire la tua non esitare e lascia subito un commento, come sempre riceverai risposta in poco tempo.

We will be happy to hear your thoughts

Leave a reply