Jag är ett stort fan av WP_Query-klassen: jag använder den på flera kundwebbplatser för att hämta och visa data på ett anpassat sätt.
Om du vill använda flera slingor på en sida är det bästa sättet att köra "WP_Query" när du behöver loop.
Men det finns en nackdel: När WordPress kör en slinga skickar den frågor till databasen, som tar längre tid och kan bromsa din webbplats.
I den här tutorialen kommer jag att visa dig hur du använder en fråga för mer än en slinga. Du kan göra detta med huvudfrågan eller så kan du använda samma teknik med WP_Query.
Vi kommer att utforska 3 aspekter:
- Skapa ett barntema och en mallfil.
- Skapa en mallbit för loopinnehållet.
- Skapa våra öglor.
Men innan vi upptäcker tillsammans Hur man installerar en Wordpress-blogg 7 steg et Hur man hittar, installera och aktivera en Wordpress tema på din blogg
Tillbaka till varför vi är här.
Vad du behöver
För att följa denna tutorial behöver du:
- Från en WordPress-installation för utveckling (lokalt).
- En kodredigerare.
- Artiklar på din webbplats med flera kategorier tilldelade
- WordPress's tjugo sexton tema
- Ett barntema på tjugo sexton installerat och aktiverat
Denna teknik anpassar sig också till din situation och till din Wordpress tema.
Skapa ett barntema
Först ska vi skapa barn-temat tjugo sexton. Jag gör det här för att jag inte vill ändra föräldratema.
Upptäck Hur man installerar en Wordpress barn tema
Skapa en ny tom mapp i din "wp-content / teman" -mapp som du kommer att kalla "tutor-tema". Du kan senare välja det namn som passar dig.
Skapa en fil som heter style.css i den här mappen och lägg till följande kod:
/*
Temanamn: Tutotema
Tema URI: https://blogpascher.com
Beskrivning: Tema för att stödja Tutorial om att köra flera slingor när du frågar databasen bara en gång. Barn tema för tjugo sexton tema.
Författare: Hervé
Författare URI: https://blogpascher.com
Mall: twentysixteen
Version: 1.0
*/
@import url ("../twentysixteen/style.css");
Spara nu den här filen och aktivera din nya Wordpress tema.
Nästa steg är att skapa en mallfil för kategorierna, det är det vi ska arbeta med.
Gör en kopia av filen "archive.php" från Wordpress tema "Tjugo sexton." Flytta den inte utan gör en kopia av den. Byt namn på den till "category.php".
För att gå längre, upptäck Hur man hanterar filer och mappar Wordpress
Detta kommer nu att vara mallfilen för kategorierna på din webbplats.
Skapa en ny mallfil
Det första steget är att skapa en ny mallfil i vårt tema som kommer att innehålla en modifierad version av loopen "tjugo sexton".
Låt oss också konsultera tillsammans Hur du sätter din WordPress-webbplats i underhållsläge
Skapa en undermapp med namnet "inkluderar" i undermappen. Och inuti, skapa en ny fil med namnet "loop-category.php".
Öppna sedan filen "template-parts / content.php" från mapparna för överordnade teman (tjugo sexton) och hitta följande kod:
" >
', esc_url (get_permalink ())),' '); ?>
/ * översättare:% s: Namnet på nuvarande inlägg * /
the_content (sprintf (
__ ('Fortsätt läsa '% s ' ', 'twentysixteen'),
get_the_title ()
));
wp_link_pages (array (
'före' => ' '. __ ('Pages:', 'twentysixteen'). ' ',
'efter' => ' ',
'link_before' => ' ',
'link_after' => '',
'pagelink' => ' '. __ ('Sida', 'tjugosixton'). ' %',
'separator' => ' , ',
));
?>
edit_post_link (
sprintf (
/ * översättare:% s: Namnet på nuvarande inlägg * /
__ ('Redigera '% s ',' twentysixteen '),
get_the_title ()
),
' ',
''
);
?>
Kopiera den här koden till den nya "loop-category.php" -filen i underordnatema.
Redigering av mall-del-filen
"Tjugo sexton" slingan visar mer än vad jag behöver, så jag ska ändra den koden. Jag vill bara visa kodavsnittet och inte innehållet, så vi tar bort innehållet.
Vad är skillnaden mellan H1 och SEO-titeln på en WordPress-artikel? Ta reda på det genom att läsa den här artikeln.
I din nya loop-category.php-fil, hitta den här koden och ta bort den:
<div class = "entry-content">
/ * översättare:% s: Namnet på nuvarande inlägg * /
the_content (sprintf (
__ ('Fortsätt läsa '% s ' ', 'twentysixteen'),
get_the_title ()
));
wp_link_pages (array (
'före' => ' '. __ ('Pages:', 'twentysixteen'). ' ',
'efter' => ' ',
'link_before' => ' ',
'link_after' => '',
'pagelink' => ' '. __ ('Sida', 'tjugosixton'). ' %',
'separator' => ' , ',
));
?>
Det andra steget är att ersätta funktionen "twenty_sixteen_excerpt ()" med funktionen "the_excerpt ()", eftersom versionen av tjugo sexton inte ger en länk till hela artikeln.
Se också Hur visa nya artiklar i en viss kategori
Hitta den här raden:
Byt ut det med detta:
Vi måste också göra några ändringar av titeltaggarna.
Ändra raden i modelldelen:
', esc_url (get_permalink ())),' '); ?>
Redigera H2-taggarna för H3:
', esc_url (get_permalink ())),' '); ?>
Registrera din modell. Gå sedan tillbaka till din Category.php-fil. Vi fortsätter med den.
Skapa slingor
Först och främst tar vi bort införandet av koden för "tjugo sexton" från vår "category.php" -fil, eftersom vi måste använda den nya filen.
Hitta din kod i din kategori.php-fil:
get_template_part ('mall-delar / innehåll', get_post_format ());
Och radera.
Då skapar vi öglorna.
I det här exemplet kommer jag att visa alla inlägg med taggen "innehåll" med den villkorliga taggen "has_tag ()". Det betyder att jag måste gå igenom tre slingor:
- Den första kontrollen om frågan har publicerat objekt med den här taggen.
- I så fall visar den andra artiklarna med den här etiketten.
- En tredje visar artiklar utan denna tagg.
Mellan varje slinga kommer jag att använda rewind_posts () för att spola tillbaka meddelanden utan att återställa frågan: vi arbetar alltid med huvudfrågan varje gång.
Den första slingan: Verifiering av artiklar
I din "kategori.php" -fil, hitta början på loopen:
while (have_posts ()): the_post ();
Definiera en ny variabel ovanför denna rad som kallas $ count:
$ Count = 0;
Lägg sedan till den här koden i den slingan:
// kontrollera om det finns några inlägg med »-taggen
$ tag = 'content';
if (has_tag ($ tag)) {
$ count + = 1;
}
Denna kod kontrollerar om meddelandena har etiketten "innehåll" och lägger till 1 i räknaren om så är fallet.
Insidan av slingan kommer att likna detta:
// Sök efter inlägg i den första slingan.
$ Count = 0;
while (have_posts ()): the_post ();
// kontrollera om det finns några inlägg med »-taggen
$ tag = 'content';
if (has_tag ($ tag)) {
$ count + = 1;
}
EndWhile;
Den andra slingan: Återställ artiklar med taggen
Nästa steg är att slinga för att visa artiklar med den taggen, bara om det finns några.
Till exempel, om värdet på $ count är större än 0.
Upptäck också Hur man anpassa Wordpress instrumentbrädan för en klient
Lägg till detta villkor i loopen:
if ($ count> 0) {
rewind_posts ();
eko ' Inlägg taggade med '. $ tag. '' ';
while (have_posts ()): the_post ();
if (has_tag ($ tag)) {
get_template_part ('inkluderar / slinga', 'kategori');
}
// Avsluta slingan.
EndWhile;
}
Den här koden verifierar att $ räkningen är större än noll och i så fall spolas tillbaka objekten och kör slingan igen. För varje objekt kontrollerar den om den äger vår etikett och i så fall kallar den den del av mallen vi just skapade.
Den tredje slingan: Visa resten av artiklarna
Resultatet blir en sista slinga på de återstående artiklarna. Om denna kategori inte har en artikel med "innehåll" -taggen, kommer den att visa alla artiklar i kategorin.
Lär dig också Hur man skapar en multi-författare blogg och låt dina läsare att skicka artiklar på din blogg
Lägg till detta i din andra slinga:
rewind_posts ();
// Second Loop - inlägg som inte har taggen "content"
while (have_posts ()): the_post ();
if (! has_tag ($ tag)) {
get_template_part ('inkluderar / slinga', 'kategori');
}
// Avsluta slingan.
slutligen; ?>
Den sista koden spolar tillbaka artiklarna och kör sedan slingan igen. Den här gången kontrollerar den om en artikel inte har taggen "innehåll", så den visar innehållet i "malldelen".
Vi föreslår också att du upptäcker Hur man lägger till ett utskriftsalternativ artiklar om Wordpress
Du kan nu testa artikelsidan på din blogg. Kom ihåg att du kan byta filter. I denna handledning använde vi "innehåll" som etikettfilter, men du kan använda det du väljer.
Upptäck också några premium WordPress-plugins
Du kan använda andra Wordpress plugins för att ge ett modernt utseende och för att optimera hanteringen av din blogg eller hemsida.
Vi erbjuder dig här några premium WordPress-plugins som hjälper dig att göra det.
1. Social Wall Addon för UserPro
UserPro kan vara mycket roligare med en social vägg. Detta är vad dess Social Wall-tillägg ger. Med pluginet Social Wall kan du skapa en vägg på din webbplats och ge dina medlemmar ett uppfriskande sätt att interagera med samhället.
Le Wordpress plugin Social Wall låter dina användare: dela meddelanden med varandra, dela bilder, kommentera andras inlägg, användare kan gilla eller ogilla ett meddelande, de kan välja att visa väggen endast för inloggade användare eller för alla användare, administratörer kan radera inlägg eller användarkommentarer etc.
Ladda ner | demo | webbhotell
2. Flipkart Affiliate Plus
Flipkart Affiliate Plus är en Wordpress plugin modul som kopplar din WordPress-webbplats till Flipkart Affiliate API.
Ce Wordpress plugin Det gör det mycket enkelt att importera produktdata från Flipkart och uppdatera den direkt på din webbplats. Flipkart Affiliate Plus är det första WordPress-pluginet för det officiella Flipkart API. Genom att använda det behöver du inte använda ett tredje parts API. Du får alltså full nytta av ditt arbete.
Ladda ner | demo | webbhotell
3. Handlingsbar Google Analytics för WooCommerce
Handlingsbar Google Analytics är ett WordPress-plugin som låter dig använda några av de bästa funktionerna i Universal Analytics, inklusive: Enhanced Ecommerce and User ID Tracking. Dessutom stöder detta plugin anonymisering av IP-adresser, produktåterbetalningar, innehållsgruppering, formulärspårning etc.
Genom att använda detta WordPress-plugin sparar du tid i integrationen av komplex Google Analytics-kod, så att du kan fokusera på att hantera dina data.
Dess huvudfunktioner är: snabb och enkel installation, tillgång till 9 förbättrade e-handelsrapporter, möjligheten att studera hur olika enheter används av samma användare och hur inköp görs, förmågan att analysera vilka produkter som återbetalas oftast, slutligen för att vidta korrigerande åtgärder och mer.
Ladda ner | demo | webbhotell
Andra rekommenderade resurser
Vi inbjuder dig också att konsultera resurserna nedan för att gå vidare i greppet och kontrollen av din webbplats och blogg.
Slutsats
Här! Det är allt för denna ganska tekniska handledning. Hoppas att vi har varit explicita om hur man korrekt använder WP_Query på WordPress. Känn dig fri att dela tipset med dina vänner på dina sociala nätverk.
Du kommer dock också att kunna konsultera vår medel, om du behöver fler element för att genomföra dina projekt för att skapa webbplatser, genom att konsultera vår guide om WordPress blogg skapande.
Men under tiden, berätta om din commentaires och förslag i det dedikerade avsnittet.
.
Hallå
I vilket fall som helst, tack så mycket för ditt svar och jag önskar er lycka till
tack
___________ ________ _____ ____________
| Artikel 1 | | arti 2 | | _A3_ | | |
| __________ | | _______ | _____ | Artikel 6 |
______________________ | 5 | | |
| _________ 4 _________ | | ____ | | ___________ |
Hej Blair
tack för dessa tutorials parfais,
Jag vill be om lite hjälp tack.
Jag skapade mitt eget wordpres-tema (html / css) och jag stötte på ett litet problem jag ska försöka träna åt dig: Jag tänker skapa en webbplats som liknar msn.com min webbplats kommer att delas in i flera avdelningar (rubriker ) som är: nyheter, underhållning, hälsa, livsstil ... etc. det vill säga att jag vill skapa en första grupp av artiklar och en andra grupp, en tredje ... etc. men visa alla grupper på samma sida och att varje grupp tillhör ett ämne (nisch). Jag undrar om detta wordpress back office kan hantera innehållet i varje avsnitt separat? med wordpress loop // Inläggs innehåll tyvärr, inga inlägg hittades! Jag får en blandning av saker:
det vill säga att min sista skrivna artikel placeras direkt på det första avsnittet som är nyheter, medan det till exempel är en artikel som tillhör livsstil.
Jag stötte på den här sidan https://codex.wordpress.org/fr:La_Boucle Jag tror att en del flera slingor kan lösa mitt problem!
Jag hoppas att du förstår vad jag försöker säga
Tack på förhand för ditt svar,
Med vänliga hälsningar,
Hej!
Jag tror att du komplicerar ditt liv för ingenting. Redan vad jag förstår är att du vill organisera dina artiklar i kategorier (avsnitt) och varje avsnitt kan tillhöra en nisch, som kan vara överordnade kategorier. Ja slingan kan hjälpa dig att göra det, och det är imponerande enkelt.
Mod!
God morgon.
först tack för ditt snabba svar. Jag tror att temat jag just skapade inte längre är kompatibelt med wordpress och det är där problemet kommer ifrån.
faktiskt eftersom dina kommentarer inte stöder den bifogade bilden kommer jag att förklara för dig genom att rita:
här är ett område av kategorier
___________ ________ _____ ____________
| Artikel 1 | | arti 2 | | _A3_ | | | så föreställ dig att varje artikel är
| __________ | | _______ | _____ | Artikel 6 | representerad av en kakel; så vi har 6
______________________ | 5 | | | objekt (varje sida innehåller bilden
| _________ 4 _________ | | ____ | | ___________ | och titeln på en viss artikel)
mitt verkliga problem, herr Blair, är att jag inte kan packa in mina artiklar så att de kan flytta från kvadrat 1 till kvadrat 6, dvs när jag lägger till en ny artikel och Jag publicerar den Jag vill att den ska ta platsen för artikel 1 som i alla befintliga teman.
- Jag tycker att detta är opraktiskt eftersom varje inlägg (artikel) har sina egna egenskaper som plats, höjd, bredd ... etc, vad tycker du då?
naturligtvis är idén lite tydlig med detta diagram, annars om jag inte har något emot det och du vill hjälpa mig har du mitt e-postmeddelande (du behöver bara skicka ett e-postmeddelande som innehåller ditt namn).
Tack än en gång för era rethinks
God kväll, i det här fallet måste du lägga till variabler av typen "int", så varje gång loop-slingan kommer du att öka variabeln och beroende på variabelns värde kan du ändra visning av artikeln. Till exempel :
if ($ i == 1) {
// din kod här
} Annars om ($ i == 2) {
// sådan
}
$ I ++;
Tyvärr kan jag inte hjälpa dig personligen vid den här tiden.