Come filtrare gli articoli di WordPress per tassonomia personalizzata

Tra le impostazioni predefinite di WordPress c’è la possibilità di filtrare l’elenco degli articoli nel backend tramite la tassonomia di default, “Categorie”, oppure tramite data, con un semplice menu a tendina. Ma ti è mai capitato di aver registrato una tassonomia personalizzata (Custom taxonomy)? Chi lo ha già fatto, si sarà reso conto che la nuova tassonomia non è presente tra le possibilità di filtro nella pagina di backend relativa all’elenco articoli.
Ma non sarebbe comodo poter filtrare i tuoi articoli anche con questa nuova tassonomia, creando magari filtri combinati anche con quello delle categorie presente di default?
Bello sicuramente, ma fortunatamente assolutamente semplice!
- Leggi l'articolo, ti bastano solo 1 minuto, 28 secondi
Sei di fretta? Scarica il PDF e consultalo quando vuoi!
Sommario
1 Il comportamento predefinito |
2 Filtrare gli articoli tramite tassonomie personalizzate |
3 Considerazioni finali |
4 Commenti |
Il comportamento predefinito
Come anticipato, WordPress dispone di default solamente del filtro per categoria e per data nella pagina di elenco articoli:
Naturalmente, combinando questi due filtri possiamo visualizzare solamente gli articoli che soddisfano i criteri di scelta.
Filtrare gli articoli tramite tassonomie personalizzate
Ma ipotizza di aver creato una Custom taxonomy per gli articoli del tuo sito WordPress e di voler creare un ulteriore filtro che faccia riferimento alla nuova tassonomia, come fare?
È presto detto! A scopo esemplificativo, ipotizza di avere creato una nuova tassonomia “topic” e per crearne il filtro ti basta modificare il file:
wp-content/themes/{nome_del_tema}/functions.php
che trovi nello spazio FTP del tuo sito ed inserire il codice:
// Aggiungo il filtro per argomenti agli articoli add_action( 'restrict_manage_posts', function( $post_type, $which ) { // Applico solamente agli articoli if ( 'post' !== $post_type ) { return; } // Recupero i termini della tassonomia $terms = get_terms( 'topic' ); // Visualizzo il filtro echo '<select name="topic" id="topic" class="postform">'; echo '<option value="">' . esc_html__( 'All topics', 'code4life' ) . '</option>'; // Visualizzo le opzioni foreach ( $terms as $term ) { printf( '<option value="%1$s" %2$s>%3$s (%4$s)</option>', $term->slug, ( ( isset( $_GET['topic'] ) && ( $_GET['topic'] == $term->slug ) ) ? ' selected="selected"' : '' ), $term->name, $term->count ); } echo '</select>'; }, 10, 2 );
La funzione appena inserita è molto semplice, non fa altro che:
- Riga 4: controllare se il tipo di post su cui la si sta cercando di applicare è effettivamente un articolo (post)
- Riga 7: recuperare tutti i termini della tassonomia, da inserire come opzioni nel menu a tendina del filtro
- Righe 10-23: costruire il markup per la visualizzazione del menu a tendina che costituisce il filtro
Ed è tutto fatto! Ecco il risultato finale:
Considerazioni finali
Naturalmente, quello preso in esame nell’articolo è solamente una casistica particolare, utilizzata a scopo esemplificativo. Partendo dall’esempio, è possibile aggiungere più di un filtro personalizzato e modificando il controllo sul post type (riga 4) è ovviamente possibile creare filtri personalizzati per qualsiasi post type, anche di tipo custom.
Non ti resta che dare libero sfogo alla tua fantasia!