Per impostazione predefinita, la pagina principale del blog WordPress mostra i post più recenti in ordine decrescente. Ma se usi le categorie sul tuo sito e i tuoi lettori vorranno vedere le novità in ogni categoria, potresti desiderare che la pagina del tuo blog sia diversa.
In questo tutorial ti mostrerò come fare proprio questo. Mostrerò come:
Per seguire questo tutorial, avrai bisogno di:
Il primo passo è ottenere il tema impostato. Creerò un tema figlio del tema Twenty Fourteen, con solo due file: style.css
e index.php
.
Ecco il mio foglio di stile:
/ * Nome tema: Mostra il post più recente in ogni URI tema categoria: http://code.tutsplus.com/tutorials/display-the-most-recent-post-in-each-category--cms-22677 Versione: 1.0.0 Descrizione: Tema per accompagnare il tutorial sulla visualizzazione del post più recente di ogni termine in una tassonomia per Tutsplus, all'indirizzo http://bitly.com/14cm0yb Autore: Rachel McCollin Autore URI: http://rachelmccollin.co.uk Licenza: GPL-3.0 + URI della licenza: http://www.gnu.org/licenses/gpl-3.0.html Percorso del dominio: / lang Text Domain: modello tutsplus: twentyfourteen * / @import url ('... / twentyfourteen / style css);
Tornerò su questo file in un secondo momento per aggiungere uno stile, ma per ora è tutto necessario che WordPress riconosca il tema secondario.
Come voglio che la mia pagina principale del blog mostri l'ultimo post in ogni categoria, creerò una nuova index.php
file nel mio tema figlio.
Per prima cosa copierò il index.php
file da Twenty Fourteen e modifica il loop e altri contenuti in modo che assomigli a questo:
Il primo passo è identificare le categorie nel tuo blog. Subito dopo l'apertura Questo usa il Allora sto usando Ora è necessario definire gli argomenti per la query. All'interno delle parentesi, aggiungi questo: Questo recupererà solo un post nella categoria corrente. Quindi, inserire la query, utilizzando il Questo produrrà l'immagine in evidenza, il titolo e l'estratto per ogni post, con ciascuno racchiuso in un link. Diamo un'occhiata a come appare ora: Come puoi vedere, c'è un problema. La mia pagina mostra il post più recente in ogni categoria, ma duplica i post perché a volte un post sarà il post più recente in più di una categoria. Risolviamolo. Sopra la linea in cui hai aggiunto il Questo crea un array vuoto chiamato Successivamente, aggiungi una nuova riga sotto l'opzione della query, in modo che le prime due righe assomiglino a questo: Questo aggiunge l'ID del post corrente al Infine, aggiungi un nuovo argomento ai tuoi argomenti di query per evitare di emettere messaggi in questo array. I tuoi argomenti ora assomigliano a questo: Questo usa il Salva il tuo Così va meglio! Ora i tuoi post non sono duplicati. Al momento è tutto un po 'sparso, con le immagini in evidenza sopra il titolo del post e l'estratto. Aggiungiamo un po 'di stile per far fluttuare l'immagine a sinistra. Nel tuo tema Ora il contenuto si adatta meglio alla pagina e si presenta meglio: È possibile adattare questa tecnica per lavorare con diversi tipi di contenuto o tassonomie. Per esempio: A volte può essere utile visualizzare gli ultimi post sul tuo blog in un modo diverso dal semplice in ordine cronologico. Qui ho dimostrato una tecnica per mostrare l'ultimo post in ciascuna delle categorie sul tuo blog, assicurando che i post non vengano duplicati se si trovano in più categorie.get_categories ()
funzione per recuperare un elenco delle categorie nel blog. Per impostazione predefinita, questo verrà recuperato in ordine alfabetico e tutte le categorie vuote non saranno incluse. Questo funziona per me quindi non sto aggiungendo argomenti aggiuntivi.foreach ($ categorie come $ categoria)
dire a WordPress di scorrere ciascuna di queste categorie a turno ed eseguire il codice all'interno delle parentesi graffe. Il prossimo passo sarà quello di creare una query che verrà eseguita per ciascuna di queste categorie.Definizione degli argomenti di query
$ args = array ('cat' => $ category-> term_id, 'post_type' => 'post', 'posts_per_page' => '1',);
Esecuzione della query
WP_Query
classe:$ query = new WP_Query ($ args); if ($ query-> have_posts ()) ?>
Ultimo in nome; ?>:
have_posts ()) $ query-> the_post (); ?> ">
→', 'venti quattordici' ) ); ?> Evitare la duplicazione di post
get_categories ()
funzione, aggiungi questa riga:$ do_not_duplicate = array ();
$ do_not_duplicate
, che useremo per memorizzare l'ID di ogni post come viene emesso e quindi per verificare se l'ID di qualsiasi post che viene interrogato in seguito è in quell'array.have_posts ()) $ query-> the_post (); $ do_not_duplicate [] = $ post-> ID; ?>
$ do_not_duplicate
schieramento.$ args = array ('cat' => $ category-> term_id, 'post_type' => 'post', 'posts_per_page' => '1', 'post__not_in' => $ do_not_duplicate);
'Post__not_in'
argomento che cerca una serie di ID post.index.php
file e dare di nuovo un'occhiata alla pagina del tuo blog:Aggiunta di stile
style.css
file, aggiungere quanto segue:.lista h2 margin-left: 10px; .category-listing img float: left; margine: 10px 2%; .category-listing .entry-title clear: none;
Adattamento di questa tecnica a diversi tipi di contenuto
get_categories ()
con get_terms ()
e cambia il 'gatto'
argomento di query a chi cerca termini di tassonomia.'post_type' => 'post'
argomento negli argomenti della query con il tuo tipo di post.per ciascuno
istruzioni per eseguire cicli multipli.single.php
pagina per visualizzare un collegamento all'ultimo post in ogni categoria dopo il contenuto del post. Se lo fai, dovrai aggiungere l'ID della pagina corrente visualizzata al $ do_not_duplicate
schieramento.Sommario