Som standard viser din viktigste WordPress-bloggside de siste innleggene dine i synkende datoordre. Men hvis du bruker kategorier på nettstedet ditt og leserne dine vil se hva som er nytt i hver kategori, vil du kanskje at bloggsiden din skal se annerledes ut.
I denne veiledningen vil jeg vise deg hvordan du gjør nettopp det. Jeg skal demonstrere hvordan:
For å følge denne opplæringen må du:
Det første trinnet er å få temaet satt opp. Jeg skal lage et barn tema i Twenty Fourteen temaet, med bare to filer: style.css
og index.php
.
Her er stilarket mitt:
/ * Tema navn: Vis siste innlegg i hver kategori Tema URI: http://code.tutsplus.com/tutorials/display-the-most-recent-post-in-each-category--cms-22677 Versjon: 1.0.0 Beskrivelse: Tema som følger med opplæringen om å vise de nyeste postfortellingene hvert semester i en taksonomi for Tutsplus, på http://bitly.com/14cm0yb Forfatter: Rachel McCollin Forfatter URI: http://rachelmccollin.co.uk Lisens: GPL-3.0 + Lisens URI: http://www.gnu.org/licenses/gpl-3.0.html Domenevei: / lang Tekstdomen: tutsplus Mal: twentyfourteen * / @import url ('... / twentyfourteen / style Css);
Jeg kommer tilbake til denne filen senere for å legge til styling, men for nå er det alt WordPress trenger å gjenkjenne barnetemaet.
Som jeg vil at min hovedbloggside skal vise det siste innlegget i hver kategori, skal jeg lage en ny index.php
fil i barnetemaet mitt.
Først skal jeg kopiere index.php
fil fra tjuefire og rediger ut sløyfen og annet innhold slik at det ser slik ut:
Det første trinnet er å identifisere kategoriene i bloggen din. Umiddelbart etter åpningen Dette bruker Så bruker jeg Nå må du definere argumentene for søket ditt. Inne i braces, legg til dette: Dette vil hente bare ett innlegg i gjeldende kategori. Deretter legger du inn spørringen din ved å bruke Dette vil utgjøre utvalgt bilde, tittel og utdrag for hvert innlegg, med hver vedlagt i en lenke. La oss se på hvordan dette ser ut nå: Som du kan se, er det et problem. Min side viser det siste innlegget i hver kategori, men det er duplisering av innlegg, fordi noen ganger blir et innlegg det siste innlegget i mer enn én kategori. La oss fikse det. Over linjen der du la til Dette oppretter et tomt system som heter Deretter legger du til en ny linje under valg av søket ditt, så de to første linjene ser slik ut: Dette legger til ID for det nåværende innlegget til Til slutt legger du til et nytt argument for spørringsargumentene dine for å unngå å utføre noen innlegg i denne gruppen. Dine argumenter vil nå se slik ut: Dette bruker Lagre din Det er bedre! Nå er innleggene dine ikke duplisert. For øyeblikket er det litt spredt ut, med de fremhevede bildene over posttittelen og utsnittet. La oss legge til noen styling for å flyte bildet til venstre. I temaet ditt Nå passer innholdet mer pent på siden og legges bedre ut: Du kan tilpasse denne teknikken til å jobbe med forskjellige innholdstyper eller taksonomier. For eksempel: Det kan noen ganger være nyttig å vise de nyeste innleggene på bloggen din på en annen måte enn bare i kronologisk rekkefølge. Her har jeg vist en teknikk for å vise det siste innlegget i hver av kategoriene på bloggen din, slik at innleggene ikke blir dupliserte hvis de er i flere kategorier.get_categories ()
funksjon for å hente en liste over kategoriene i bloggen. Som standard hentes dette i alfabetisk rekkefølge, og eventuelle tomme kategorier vil ikke bli inkludert. Dette fungerer for meg, så jeg legger ikke til noen ekstra argumenter.foreach ($ kategorier som $ kategori)
å fortelle WordPress å løpe gjennom hver av disse kategoriene igjen og kjøre koden inne i bøylene. Det neste trinnet vil være å lage en spørring som vil løpe for hver av disse kategoriene.Definere spørringsargumenter
$ args = array ('cat' => $ category-> term_id, 'post_type' => 'innlegg', 'posts_per_page' => '1',);
Kjører spørringen
WP_Query
klasse:$ query = nytt WP_Query ($ args); hvis ($ query-> have_posts ()) ?>
Siste inn Navn; ?>:
have_posts ()) $ query-> the_post (); ?> ">
→',' twentyfourteen ')); ?> Unngå duplisering av innlegg
get_categories ()
funksjon, legg til denne linjen:$ do_not_duplicate = array ();
$ do_not_duplicate
, som vi skal bruke til å lagre IDen til hvert innlegg som det er utdata og deretter for å sjekke om IDen til et innlegg som blir forespurt senere er i den rekkefølge.have_posts ()) $ query-> the_post (); $ do_not_duplicate [] = $ post-> ID; ?>
$ do_not_duplicate
matrise.$ args = array ('cat' => $ category-> term_id, 'post_type' => 'innlegg', 'posts_per_page' => '1', 'post__not_in' => $ do_not_duplicate);
'Post__not_in'
argument som ser etter en rekke post-IDer.index.php
fil og ta en titt på bloggsiden din igjen:Legger til styling
style.css
fil, legg til følgende:.notering h2 margin-left: 10px; .kategori-liste img float: left; margin: 10px 2%; .category-listing .entry-title clear: none;
Tilpasse denne teknikken til forskjellige innholdstyper
get_categories ()
med get_terms ()
og endre 'katt'
spørringsargument til en på jakt etter taksonomi.'post_type' => 'innlegg'
argument i spørringsargumentene med posttypen din.for hver
uttalelser for å kjøre flere løkker.single.php
side for å vise en lenke til det siste innlegget i hver kategori etter innholdet i innlegget. Hvis du gjør dette, må du legge til IDen til den gjeldende siden som vises til $ do_not_duplicate
matrise.Sammendrag