Cred că este sigur să spun că, dacă sunteți un blogger, doriți să evidențiați cel mai recent conținut de pe blogul dvs., astfel încât oamenii să îl găsească și să îl citească. Există câteva moduri în care puteți face acest lucru, inclusiv folosirea unui stil diferit pentru prima postare din pagina dvs. de blog pentru ao evidenția sau a le afișa în mod proeminent în bara laterală.
În acest tutorial vă voi arăta cum să mergeți puțin mai departe decât puteți utiliza CSS: în loc să vă stylizați în mod diferit postul de blog, veți transmite conținut diferit pentru el. Mai exact, prima postare va avea un titlu, o imagine și un conținut, în timp ce alte postări vor avea doar titlul, imaginea și fragmentul.
Puteți adapta această tehnică: dacă nu doriți prea multe detalii, puteți modifica buclă în fiecare dintre interogările la care vom lucra, astfel încât (de exemplu) primul post să aibă un titlu, o imagine și un fragment în timp ce alții au doar titlul și imaginea. Sau puteți să lăsați imaginea recomandată pentru postările ulterioare. Depinde de tine.
Tehnica pe care o vom folosi pentru a face acest lucru implică utilizarea WP_Query
pentru a scrie o interogare suplimentară înainte de interogarea principală din home.php
șablon, care conduce pagina principală de blog. Atunci vom folosi pre_get_posts ()
pentru a modifica interogarea principală astfel încât cel mai recent post să nu fie afișat de două ori. Voi crea o temă copil a temei implicite Twenty Fifteen și creați o home.php
fișier pentru el, plus o foaie de stil pentru a configura tema copilului.
Pentru a urma acest tutorial, veți avea nevoie de:
Dacă lucrați cu tema Douăzeci și cincisprezece, primul pas este să vă configurați tema copilului. Creați un dosar nou în dvs. wp-content / teme
să-i dați un nume - o chem pe a mea bucle tutsplus-blog-page-doi-
. Acum creați un gol style.css
fișier în acel dosar și adăugați următoarele:
/ * Tema Nume: Tuts + Utilizați două buclă pe pagina principală a paginii tale URI: http://rachelmccollin.co.uk/wptutsplus-taxonomy-archive-list-by-second-taxonomy/ Descriere: Temă pentru a sprijini WPTutsPlus tutorial privind crearea o arhivă de taxonomie personalizată. Tema copilului pentru tema Twenty Fifteen. Autor: Rachel McCollin Autor URI: http://rachelmccollin.co.uk/ Format: twentyfifteen Versiune: 1.0 * / @import url ("... /twentyfifteen/style.css");
Acest lucru spune WordPress că tema dvs. este un copil al temei Douăzeci și cincisprezece și importă foaie de stil de la acea temă. Veți dori probabil să editați unele detalii pentru a reflecta faptul că aceasta este tema dvs..
Deoarece este pagina principală de blog pe care doriți să o modificați, va trebui să creați un fișier de șablon pentru cel din tema copilului dvs. Fișierul șablon pe care trebuie să-l creați este home.php
, care alimentează pagina principală a blogului dacă este sau nu prima pagină a site-ului dvs..
Creați un fișier numit home.php
în dosarul tematic.
Deschide acum index.php
fișier în Twenty Fifteen și copiați codul la începutul și la sfârșitul acelui fișier (adică nu la bucla). Fișierul dvs. va arăta astfel:
__ ("Pagina anterioară", "douăzeci și cincizeci"), "next_text" => __ ("Pagina următoare", "". __ ("Pagina", "douăzeci și cinci"). ' ',)); ?>
Dacă utilizați propria temă, copiați codul echivalent din temele proprii index.php
fișierul în loc, astfel încât să aveți elementele care conțin conținutul paginii dvs., dar fără buclă.
Următorul pas este să creați prima buclă, care va afișa în întregime cel mai recent post.
Sub închidere etichetă în
home.php
fișier, adăugați argumentele pentru interogare:
$ args = array ('posts_per_page' => '1');
Aceasta va cere doar cea mai recentă postare. Rețineți că nu este necesar să includeți tipul postului și acesta să fie implicit 'post'
.
Acum adăugați bucla sub argumentele dvs.:
$ query = noua valoare WP_query ($ args); dacă ($ query-> have_posts ()) ?> have_posts ()): $ interogare-> the_post (); / * începe buclă * /?>> ', esc_url (get_permalink ())),''); ?> „> 'stânga', 'alt' => tăiere (strip_tags ($ wp_postmeta -> _wp_attachment_image_alt)))); ?>
Această buclă scoate titlul postului, miniatura, dacă există, și conținutul.
Rețineți că am adăugat o clasă suplimentară, .prima postare
, în post_class ()
șablon de șablon. Dacă doriți să evidențiați prima dvs. postare folosind CSS, această clasă suplimentară vă oferă o modalitate ușoară de a face acest lucru.
Este foarte important să adăugați rewind_posts ()
după buclă, deoarece în caz contrar bucla următoare nu va funcționa.
Cea de-a doua bucla este foarte asemănătoare, dar în loc de utilizare WP_Query
, acesta accesează doar interogarea principală.
Sub bucla pe care tocmai ați adăugat-o, adăugați a doua bucla:
> ', esc_url (get_permalink ())),''); ?> „> 'stânga', 'alt' => tăiere (strip_tags ($ wp_postmeta -> _wp_attachment_image_alt)))); ?> "> Informații suplimentare.
Această buclă este foarte asemănătoare cu prima, dar cu două diferențe:
.prima postare
clasă.Acum salvați fișierul.
În momentul de față, dacă verificați pagina principală a blogului, veți vedea că cel mai recent post este afișat de două ori. Vom remedia acest lucru prin compensarea interogării principale folosind pre_get_posts
cârlig.
Creați un fișier nou în tema numită functions.php
. Alternativ, dacă lucrați cu propria temă și are deja un fișier de funcții, deschideți-l.
Adăugați acest cod în fișierul cu funcții:
is_home () && $ interogare-> is_main_query ()) $ query-> set ('offset', '1'); add_action ('pre_get_posts', 'tutsplus_offset_main_query');
Aceasta filtrează interogarea principală, dar numai pe pagina de pornire, adăugând un decalaj de 1.
Acum salvați fișierul dvs. și aruncați o privire la pagina principală a blogului dvs.:
E o problemă. Deoarece blogul meu are un post lipicos, acesta este afișat deasupra celei mai recente postări, ceea ce nu este ceea ce vreau. De asemenea, afișează conținutul complet al postării celei mai recente și postării lipicioase.
Acest lucru este ușor de corectat. Deschide-ți home.php
fișier din nou și adăugați un alt argument la argumentele pentru prima dvs. interogare:
'ignore_sticky_posts' => true
Acest lucru va asigura că WordPress ignoră mesaje lipicioase atunci când rulează prima buclă. Primul set de argumente de interogare va arăta astfel:
$ args = array ('posts_per_page' => '1', 'ignore_sticky_posts' => true);
Acum salvați din nou fișierul și verificați pagina blogului dvs.:
Asa e mai bine! Cel mai recent post este la început în plin, iar postul lipicios este sub el, doar cu ieșirea extrasului. Dacă parcurgi mai departe, vei vedea că și celelalte postări arată doar un extras:
Dacă doriți să ignorați mesaje lipicioase în cea de-a doua buclă, puteți face acest lucru adăugând ignore_sticky_posts
argumentul la cea de-a doua interogare. Vreau ca mesajele lipicioase să funcționeze așa cum ar trebui pentru toate, cu excepția celui mai recent post, cu toate acestea, așa că nu o voi face.
Veți observa că, dacă navigați la pagina a doua și ulterioară a postărilor (adică paginile paginate) din blogul dvs., aceleași postări sunt afișate ca pe prima pagină, ceea ce înseamnă că sunt afișate numai cele zece postări cele mai recente! Acest lucru se datorează faptului că compensarea interogării principale a rupt paginarea.
Din fericire, acest lucru este ușor de stabilit prin modificarea funcției pe care ați adăugat-o pre_get_posts
cârlig.
Deschide-ți functions.php
fișier din nou și editați funcția așa că se citește ca mai jos:
funcția tutsplus_offset_main_query ($ query) if ($ query-> is_home () && $ query-> is_main_query () &&! $ interogare-> is_paged ()) $ query-> set ('offset', '1');
Ceea ce am făcut aici este adăugat is_paged ()
eticheta condiționată. Acest lucru verifică paginile paginate, altele decât prima, astfel că returnează adevărat dacă vizitatorul se uită la cea de-a doua pagină sau ulterioară a postărilor. Prin utilizarea !$ Query-> is_paged ()
, ne asigurăm că interogarea va fi compensată numai dacă pagina este nu paginat.
Acum salvați fișierul și verificați din nou. Paginarea va funcționa bine acum.
Veți observa că aceeași postare recentă este încă afișată în partea de sus a paginii. Acest lucru se datorează faptului că pagina utilizează același șablon și aceleași două bucle.
În site-ul meu sunt bucuros să las acest lucru, deoarece este pentru că vreau ca postul cel mai recent să fie foarte proeminent. Cu toate acestea, dacă doriți să modificați acest lucru, ați adăuga un argument suplimentar la prima dvs. interogare, și anume 'paged' => false
.
Modificarea modului în care postările principale ale paginilor dvs. de pe blogul dvs. este ușor de făcut se utilizează WP_Query
clasa cu pre_get_posts
cârlig. În acest tutorial ați învățat cum să:
WP_Query
pentru a scoate primul post în întregimeAți putea adapta această tehnică pentru a afișa ultima postare dintr-o anumită categorie, pentru a utiliza conținut diferit în buclă și multe altele.