Per impostazione predefinita, WordPress crea archivi che elencano tutti i tuoi messaggi in ordine inverso. Se gli utenti cercano post in una determinata categoria o con un determinato termine di tassonomia, dovranno visitare la pagina di archivio per tale categoria o termine.
Ma cosa succede se vuoi rendere più user-friendly il tuo archivio principale per un tipo di post? In questo tutorial, ti mostrerò come creare una pagina di archivio per un tipo di post personalizzato che visualizza i post di quel tipo di post classificati in base a una tassonomia, in modo che invece di una lunga lista i visitatori visualizzino un elenco per ogni termine di tassonomia.
Per seguire questo tutorial avrai bisogno di un'installazione di sviluppo di WordPress e un editor di codice. Creerai un tema che è un tema figlio di ventiquattro anni, quindi avrai bisogno di quello installato (che dovrebbe essere di default).
Non ho intenzione di mostrarti come creare un tema figlio, ma se sei bloccato, dai un'occhiata al foglio di stile nel pacchetto di codice per questo tutorial.
Nella mia esperienza, questa tecnica è più comunemente necessaria per i tipi di post personalizzati e le tassonomie piuttosto che per i normali post e categorie o tag, quindi inizierò registrando un tipo di post e una tassonomia.
Nota: sto utilizzando lo stesso tipo di post "animale" che ho registrato in un precedente tutorial sulla creazione di un archivio basato su immagini. Se vuoi spingere un po 'di più le cose, puoi combinare la tecnica in quel tutorial con quella che ti mostro qui e visualizzare i tuoi elenchi di termini di tassonomia con le immagini in primo piano.
Nel file delle funzioni del tema, aggiungere il seguente codice per registrare il tipo di messaggio:
// registra un tipo di messaggio personalizzato chiamato funzione "animals" wptp_create_post_type () $ labels = array ('name' => __ ('Animals'), 'singular_name' => __ ('animal'), 'add_new' => __ ('Nuovo animale'), 'add_new_item' => __ ('Aggiungi nuovo animale'), 'edit_item' => __ ('Modifica animale'), 'new_item' => __ ('Nuovo animale'), 'view_item '=> __ (' Visualizza animale '),' search_items '=> __ (' Cerca animali '),' not_found '=> __ (' Nessun animale trovato '),' not_found_in_trash '=> __ (' Nessun animale trovato in Spazzatura' ), ); $ args = array ('labels' => $ labels, 'has_archive' => true, 'public' => true, 'hierarchical' => false, 'supports' => array ('title', 'editor', '' estratto "," campi personalizzati "," miniatura "," attributi della pagina ")," tassonomie "=> matrice (" post_tag "," categoria "),); register_post_type ('animal', $ args); add_action ('init', 'wptp_create_post_type');
Successivamente, aggiungi il codice per registrare la tassonomia:
// registra una tassonomia chiamata funzione "Famiglia animale" wptp_register_taxonomy () register_taxonomy ('animal_cat', 'animal', array ('labels' => array ('name' => 'Animal Families', 'singular_name' => ' Animal Family ',' search_items '=>' Cerca famiglie di animali ',' all_items '=>' Tutte le famiglie di animali ',' edit_item '=>' Modifica famiglie di animali ',' update_item '=>' Aggiorna famiglia di animali ',' add_new_item '=>' Aggiungi nuova famiglia di animali ',' new_item_name '=>' New Animal Family Name ',' menu_name '=>' Animal Family ',),' hierarchical '=> true,' sort '=> true,' args '=> array (' orderby '=>' term_order '),' rewrite '=> array (' slug '=>' animal-family '),' show_admin_column '=> true)); add_action ('init', 'wptp_register_taxonomy');
Dopo averlo fatto, aggiungi alcuni dati. Qui sotto puoi vedere i dati che ho aggiunto con alcuni termini di tassonomia applicati. Non faccio alcuna richiesta per l'accuratezza della mia terminologia per quanto riguarda le famiglie di animali, quindi per favore non commentare se ho sbagliato!
Il prossimo passo è creare un modello di archivio per il nuovo tipo di post. Nel tuo tema, crea un nuovo file chiamato archive-animal.php
.
Poiché questo tema è un tema secondario di venticinque anni, il modello di archivio avrà bisogno del codice copiato da quel tema come un wrapper per il ciclo personalizzato che si intende creare. Quindi aggiungi il seguente al modello di archivio:
Nota: se stai lavorando con il tuo tema, copia il codice di avvolgimento dall'indice o dal file di archivio del tuo tema.
3. Compilazione del modello di archivio: recupero dei termini di tassonomia
Affinché il tuo archivio possa visualizzare gli animali in base al termine della tassonomia, il passo successivo è quello di recuperare quei termini.
Nel tuo nuovo file modello, sotto la chiusura
tag (o sotto la parte di apertura del tuo codice di avvolgimento se stai usando il tuo tema), recupera i termini usando
get_terms ()
:'count', 'hide_empty' => 0)); ?>Nota che ho usato due parametri qui:
ordinato da
- questo ti consente di specificare l'ordine dei termini visualizzati. Ho usato contare
come valore in modo che il termine con la maggior parte dei post assegnati ad esso verrà visualizzato per primo, ma è possibile ordinare per nome o ID - se lasci questo spazio, WordPress ordinerà per nome. Vedi la pagina del codice su get_terms ()
per ulteriori dettagli.hide_empty
- questo dice a WordPress di non recuperare i termini senza i post assegnati a loro. Ti evita di dover controllare se la tua query ha post in seguito.Fatto questo, tu usi per ciascuno()
dire a WordPress di passare attraverso ognuno di questi termini ed eseguire una query che è necessario definire. Sotto il codice che hai appena aggiunto, inserisci quanto segue:
'animal', 'animal_cat' => $ term-> slug); $ query = new WP_Query ($ args);
Questo indica a WordPress di scorrere ogni termine e quindi definisce la query che deve eseguire ogni volta. Gli argomenti per la query includono il tipo di post e il termine in 'Animal_cat'
tassonomia, che è il valore del $ termine
variabile.
Dopo aver definito la tua query, devi aggiungere un ciclo. Innanzitutto, invia il nome del termine interrogato come intestazione. Sotto la linea che inizia $ query
ma dentro le parentesi del per ciascuno
dichiarazione, aggiungi questa riga:
eco''. $ term-> nome. '
';
Successivamente, aggiungi il codice per contenere i tuoi messaggi in un elenco:
// emette i titoli dei post in una lista echo '
All'interno della lista, ora aggiungi il tuo loop:
// Avvia il ciclo while ($ query-> have_posts ()): $ query-> the_post (); ?>
Come puoi vedere, questo è un ciclo diretto che emette il titolo di ogni post all'interno di un link al post e non genera alcun contenuto. Se vuoi, puoi aggiungere un estratto o un'immagine in primo piano qui.
Infine, reimposta la query utilizzando wp_reset_postdata ()
sotto la lettura della linea eco '';
Questo è ciò che la tua query e il ciclo ora assomiglieranno:
'animal', 'animal_cat' => $ term-> slug); $ query = new WP_Query ($ args); // mostra il nome del termine in un tag di intestazione echo ''. $ term-> nome. '
'; // emette i titoli dei post in una lista echo '
Infine, salva il file del modello e visualizza l'archivio del tipo di post. Vedrai che elenca i tuoi post in termini di tassonomia piuttosto che in una lunga lista.
Questa tecnica è utile quando vuoi che i visitatori siano in grado di vedere rapidamente i dati categorizzati senza dover esaminare una serie di pagine di archivio - riunisce tutto in un unico posto ma ordinato per comodità. Ecco alcune idee su come è possibile adattare la tecnica e portarla avanti:
get_categories ()
o get_tags ()
.index.php
file per visualizzare i post per categoria, tag o termini di tassonomia.posts_per_page
e compensare
nella tua query argomenti per fare questo - vedi i dettagli di come funziona sulla pagina Codex WP_Query.posts_per_page
per limitare il numero di post visualizzati in modo che ogni lista abbia la stessa lunghezza. È possibile combinare questo con lo stile per visualizzare gli elenchi affiancati.get_term_link ()
per fare questo.