WordPress.org

Nyelvek: angol • Français • Italiano • Hurok 日本語 Português do Brasil • Русский • 中文(简体) • 中文(繁體) • (Hozzáadás a nyelv)

A Hurok a PHP kód által használt WordPress hozzászólás megjelenítéséhez. A hurok használatával a WordPress feldolgozza az egyes bejegyzéseket, hogy megjelenjenek az aktuális oldalon, és formázza azokat aszerint, hogy megfelelnek-e a hurok címkéin belül megadott kritériumoknak. A hurokban lévő HTML vagy PHP kód minden bejegyzésen feldolgozásra kerül.

amikor a WordPress dokumentációja azt mondja, hogy “ennek a címkének a hurokon belül kell lennie”, például konkrét Sabloncímkéknél vagy bővítményeknél, a címke minden bejegyzésnél megismétlődik. Például a hurok alapértelmezés szerint a következő információkat jeleníti meg minden bejegyzéshez:

  • cím (the_title ())
  • idő (the_time ())
  • kategóriák (the_category ()).

az egyes bejegyzésekről további információkat jeleníthet meg a megfelelő Sabloncímkék használatával, vagy (haladó felhasználók számára) a $post változó elérésével, amely az aktuális bejegyzés információival van beállítva, miközben a ciklus fut.

egy kezdő pillantást a hurok, lásd a hurok akcióban.

a hurok használata

a hurkot a téma indexébe kell helyezni.php-ben és bármely más sablonban, amelyet a post információk megjelenítésére használnak.

ügyeljen arra, hogy a fejlécsablon hívását a téma sablonjainak tetejére helyezze. Ha a hurkot a saját tervén belül használja (és a saját terv nem sablon), állítsa a wp_use_themes értéket false értékre:

<?php define( 'WP_USE_THEMES', false ); get_header(); ?>

a hurok itt kezdődik:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

és itt ér véget:

<?php endwhile; else : ?><p><?php esc_html_e( 'Sorry, no posts matched your criteria.' ); ?></p><?php endif; ?>

ez a PHP alternatív szintaxisát használja a vezérlési struktúrákhoz, és kifejezhető:

<?php if ( have_posts() ) {while ( have_posts() ) {the_post(); //// Post Content here//} // end while} // end if?>

Loop Examples

Style Posts From Some Category Differently

ez a példa minden bejegyzést a címével (amely a bejegyzés állandó linkjére mutató hivatkozásként szolgál), kategóriákkal és tartalommal jelenít meg. Ez lehetővé teszi a ‘3’ Kategóriaazonosítóval rendelkező kategória bejegyzéseinek eltérő stílusát is. Ehhez az in_category () Sabloncímkét kell használni. Olvassa el figyelmesen a megjegyzéseket, hogy megnézze, mit csinál a kód egyes része.

Megjegyzés: minden HTML kód kívül kell lennie a <?php ?> címkék. És a PHP kódnak (még olyan egyszerű dolgoknak is, mint a göndör zárójelek: } ) a < – ben kell lennie?php ?> címkék. Elindíthatja és leállíthatja a PHP kód blokkjait, hogy a HTML kódot az if és else utasításokban interperszálja, amint azt a fenti példa mutatja.

bejegyzések kizárása valamilyen kategóriából

ez a példa bemutatja, hogyan lehet elrejteni egy adott kategóriát vagy kategóriákat a megjelenítéstől. Ebben az esetben a 3.és 8. kategóriába tartozó álláshelyek nem tartoznak ide. A példa abban különbözik a fenti példától, hogy megváltoztatja magát a lekérdezést.

Megjegyzés: Ha ezt a példát használja a főoldalához, akkor egy másik sablont kell használnia a Kategóriaarchívumokhoz; különben a WordPress kizárja a 3. és a 8. Kategória összes bejegyzését, még akkor is, ha megnézi azt a Kategóriaarchívumot! Ha azonban ugyanazt a sablonfájlt szeretné használni, ezt elkerülheti az is_home () címke használatával, hogy a 3. és a 8. kategóriába tartozó bejegyzések csak a főoldalról legyenek kizárva:

...<?php if ( is_home() ) {$query = new WP_Query( 'cat=-3,-8' );if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); } else {...?>...

vannak más feltételes címkék is, amelyek felhasználhatók a kimenet vezérlésére attól függően, hogy egy adott feltétel igaz-e a kért oldalra vonatkozóan.

Objektumorientáció

a hurkok az objektumorientált és a globális viselkedés kombinációi. Ez eleinte zavaró.

a hurkok két fontos globális változója:

  • $wp_query, amely egy objektum osztály WP_Query, kezében egy WP adatbázis lekérdezés eredménye, amelyek között $wp_query – > hozzászólás, egy sor egyedi WP_Posts.
  • $post, amely a wp_post

osztály aktuális objektuma ne feledje: az összes sabloncímke alapértelmezés szerint a $post globális változóra támaszkodik, a $post globális változót pedig a the_post () állítja be/módosítja, amely az adatokat a $wp_query globális változóból kapja. a $post-ot a wp_query::the_post() is beállítja/módosítja a másodlagos hurkokban használt módon.

több hurok

ez a szakasz a hurok fejlett használatával foglalkozik. Ez egy kicsit technikai, de ne hagyd, hogy megijeszteni. Kezdjük egy egyszerű példával, és onnan folytatjuk a munkát. Egy kis józan ésszel, türelemmel és lelkesedéssel te is több hurkot is megtehetsz.

először is, miért akarna valaki több hurkot használni? Általában a válasz az, hogy érdemes valamit tenni az egyik bejegyzéscsoporttal, és valami mást tenni egy másik bejegyzéscsoporttal, de mindkét csoportot ugyanazon az oldalon jelenítheti meg. A “valami” szinte bármit jelenthet; csak a PHP készséged és a képzeleted korlátoz.

az alábbi példákba kerülünk, de először olvassa el az alapokat. Vessen egy pillantást az alaphurokra. Ez a következőkből áll:

<?php if ( have_posts() ) : ?><?php while ( have_posts() ) : the_post(); ?> <!-- do stuff ... --><?php endwhile; ?><?php endif; ?>

egy kicsit félre a Do stuff: ebben a példában ez egyszerűen egy helyőrzője egy csomó kódot, amely meghatározza, hogyan kell formázni és megjeleníteni minden bejegyzést egy oldalon. Ez a kód változhat attól függően, hogy hogyan szeretné kinézni a WordPress-t. Ha megnézzük a Kubrick-téma indexét.php A do stuff szakasz minden alább lenne:

<?php while ( have_posts() ) : the_post(); ?>

a fenti:

<?php comments_popup_link( 'No Comments "', '1 Comment "', '% Comments "' ); ?>

magyarázat a kódolókhoz:a have_posts() és a the_post() kényelmi csomagolók a globális $wp_query objektum körül, ahol az összes művelet található. A $ wp_query a blog fejlécében kerül meghívásra, és a GET és a PATH_INFO segítségével érkező fed lekérdezési argumentumok. A $wp_query veszi az argumentumokat, és épít és végrehajtja a DB lekérdezést, amely egy sor bejegyzést eredményez. Ez a tömb az objektumban tárolódik, és visszakerül a blog fejlécébe, ahol a globális $posts tömbbe van töltve (a régi post hurkokkal való visszamenőleges kompatibilitás érdekében).

miután a WordPress befejezte a blog fejlécének betöltését, és leereszkedik a sablonba, megérkezünk a post hurokhoz. A have_posts () egyszerűen felhívja a $wp_query->have_posts () – t, amely ellenőrzi a hurok számlálót, hogy vannak-e bejegyzések a post tömbben. És a the_post() meghívja a $wp_query->the_post () függvényt, amely előlegezi a loop számlálót, és beállítja a globális $post változót, valamint az összes globális post adatot. Miután kimerítettük a hurkot, a have_posts () false értéket ad vissza, és kész vagyunk.

hurok példák

az alábbiakban három példát használunk több hurok használatára. A több hurok használatának kulcsa az, hogy a $wp_query csak egyszer hívható meg. Ennek megkerülése érdekében a lekérdezést újra felhasználhatja a rewind_posts() hívásával vagy egy új lekérdezési objektum létrehozásával. Ezt az 1. példa tárgyalja. A 2. példában egy változó használata a lekérdezés eredményeinek tárolására vonatkozik. Végül a ‘multiple loops in action’ egy csomó ötletet hoz össze, hogy dokumentálja a több hurok használatának egyik módját egy bizonyos kategóriájú bejegyzések népszerűsítésére a blog kezdőlapján.

több hurok 1.példa

annak érdekében, hogy ugyanazt a lekérdezést másodszor is áthúzza, hívja a rewind_posts () függvényt. Ez visszaállítja a hurok számlálót, és lehetővé teszi egy másik hurok elvégzését.

<?php rewind_posts(); ?> <?php while ( have_posts() ) : the_post(); ?><!-- Do stuff... --><?php endwhile; ?>

ha befejezte az eredeti lekérdezés bejegyzéseit, és egy másik lekérdezést szeretne használni, akkor újra felhasználhatja a $wp_query objektumot a query_posts() meghívásával, majd a visszacsatolással. A query_posts () új lekérdezést hajt végre, új posts tömböt épít, és visszaállítja a hurokszámlálót.

ha meg kell tartania az eredeti lekérdezést, létrehozhat egy új lekérdezési objektumot.

több hurok 2.példa

a több hurok használatának egy másik verziója újabb megközelítést alkalmaz a have_posts() és a the_post () használatának képtelenségének megkerülésére. Ennek megoldásához az eredeti lekérdezést egy változóban kell tárolnia, majd újra hozzá kell rendelnie a másik hurokhoz. Így használhatja az összes szabványos funkciót, amely az összes globálisra támaszkodik.

például:

Megjegyzés: A PHP 5-ben az objektumokra a “= clone” operátor hivatkozik a “=” helyett, mint a PHP 4-ben. Ahhoz, hogy a 2. példa PHP 5-ben működjön, a következő kódot kell használnia:

ez a második példa azonban nem működik a WordPress 2.1-ben.

több hurok működés közben

a több hurok használatának megértésének legjobb módja az, ha valóban példát mutat a használatára. Talán a több hurok leggyakoribb használata két (vagy több) bejegyzéslista megjelenítése egy oldalon. Ez gyakran akkor történik, amikor a webmester nem csak a legfrissebb írt bejegyzést akarja megjeleníteni, hanem egy bizonyos kategóriából származó bejegyzéseket is.

az összes formázási és CSS-problémát félretéve tegyük fel, hogy két bejegyzéslistát szeretnénk. Az egyik a legfrissebb bejegyzéseket sorolja fel (a legutóbb hozzáadott 10 bejegyzés), a másik pedig csak egy bejegyzést tartalmaz a ‘kiemelt’kategóriából. Először a ‘kiemelt’ kategóriába tartozó bejegyzéseket kell megjeleníteni, majd a bejegyzések második felsorolását (a szabványt). A fogás az, hogy egyik bejegyzés sem jelenhet meg mindkét kategóriában.

1. lépés. Csak egy bejegyzést kap a ‘kiemelt’ kategóriából.

angolul a fenti kód a következő lenne:

Set $my_query egyenlő az összes bejegyzés lekérdezésének eredményével, ahol a kategória neve kiemelt, és egyébként csak egy bejegyzést szerezz nekem. Állítsa be a $do_not_duplicate változót is, amely megegyezik a visszaadott egyetlen bejegyzés azonosító számával. Emlékezzünk arra, hogy a do stuff sor a letöltött bejegyzéshez társított összes formázási lehetőséget képviseli.

vegye figyelembe, hogy a következő lépésben a $do_not_duplicate értékre lesz szükségünk annak biztosításához, hogy ugyanaz a bejegyzés ne jelenjen meg mindkét listában.

2.lépés. A második hurok, szerezd meg az X legújabb hozzászólásokat (egy kivételével).

a következő kód x legutóbbi hozzászólást kap (a WordPress beállításaiban meghatározottak szerint) mentse el az első hurokból már megjelenítettet, és a Do stuff szerint jeleníti meg őket.

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); if ( $post->ID == $do_not_duplicate ) continue;?><!-- Do stuff... --><?php endwhile; endif; ?>

angolul a fenti kód így szól:

Szerezd meg az összes hozzászólást, ahol egy bejegyzés egyenlő $do_not_duplicate akkor csak ne csinálj semmit (folytassa), különben az összes többi hozzászólást a Do stuff szerint jelenítse meg. Ezenkívül frissítse a gyorsítótárat, hogy a címkézés és a kulcsszó beépülő modulok jól játszhassanak. Visszahívás, $do_not_duplicate változó tartalmazza a már megjelenített bejegyzés azonosítóját.

a végeredmény

így néz ki az utolsó kóddarab formázás nélkül:

a végeredmény egy két listát tartalmazó oldal lenne. Az első lista csak egy bejegyzést tartalmaz – a legutóbbi bejegyzés a ‘funkció’ kategóriából. A második lista X legutóbbi bejegyzést tartalmaz (a WordPress beállításaiban meghatározottak szerint), kivéve azt a bejegyzést, amely már megjelenik az első listában. Tehát, ha a funkció post helyébe egy újat, az előző funkció jelenik meg a standard post list szakasz alatt (attól függően, hogy hány hozzászólás úgy dönt, hogy megjelenjen, és a post gyakorisága). Ezt a technikát (vagy hasonlót) sokan használják a Sablonhierarchia ismeretével együtt, hogy más otthont teremtsenek.php és index.php. Lásd a kapcsolódó forrásokat az oldal alján.

Megjegyzés több hozzászólás az első kategóriában

ha posts_per_page=2 vagy több, akkor meg kell változtatni a kódot egy kicsit. A $do_not_duplicate változót tömbre kell változtatni, nem pedig egyetlen értékre. Ellenkező esetben az első ciklus befejeződik, és a $do_not_duplicate változó csak a legutóbbi bejegyzés azonosítójával lesz egyenlő. Ez duplikált hozzászólásokat eredményez a második hurokban. A probléma megoldásához cserélje ki a

szót

Megjegyzendő, hogy a “posts_per_page” tetszőleges szám lehet.Ez megváltoztatja $do_not_duplicate egy tömb. Ezután cserélje ki a

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); if ( $post->ID == $do_not_duplicate ) continue; ?>

értéket

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); if ( in_array( $post->ID, $do_not_duplicate ) ) continue; ?>

értékre, ahol folytatja a mintát bármilyen posts_per_page értékre (ebben az esetben 2).

Alternatív megoldásként a teljes $do_not_duplicate tömböt átadhatja $wp_query-nek, és csak a feltételeknek megfelelő bejegyzéseket adja vissza:

<?php query_posts( array( 'post__not_in' => $do_not_duplicate ) );if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 

ne feledje, hogy a karakterlánc helyett a lekérdezési paraméter asszociatív tömb volt, amely beállította a post_ _ not_in opciót.

beágyazott hurkok

a fészkelő hurkok azt jelentik, hogy egy második hurkot futtat az első befejezése előtt. Ez hasznos lehet például egy rövid kóddal ellátott bejegyzéslista megjelenítéséhez.

$my_query = new WP_Query( 'cat=3' );if ( $my_query->have_posts() ) { while ( $my_query->have_posts() ) { $my_query->the_post();the_content();}}wp_reset_postdata();

a fő hurokadatokat egy beágyazott hurok után vissza kell állítani, hogy egyes globális változók ismét a helyes értékeket tartsák.

Sources

a több hurokról szóló rész Ryan Boren és Alex King beszélgetésének kombinációja a hackerek levelezőlistáján található hurokról. A beágyazott hurkok példáját egy másik vita ihlette a levelezőlistán, valamint Nicolas Kuttler egyik hozzászólása.

források

  • WordPress WP_Query Generator
  • bekerülni a hurok – (diák) bevezetés hogyan plugins és témák módosíthatja a hurok
  • WordPress egyéni hurok
  • WordPress WP_Query hurok generátor

Related

Ha többet szeretne megtudni a WordPress hurok, és a különböző sablon címkék, hogy a munka csak a hurok, itt További források:

többet a hurok

  • cikk: a hurok akcióban
  • cikk: sablon címkék
  • cikk: A hurok használata Sablonfájlokban

cikkek

  • cikk: a hurok – alapvető áttekintés a lekérdezés használatáról a WordPress hurokban.
  • cikk: lekérdezés áttekintése-magyarázat arra, hogyan lehet meghatározni, hogy mely lekérdezések generálják a WordPress-t.
  • cikk: a lekérdezések testreszabása horogon keresztül
  • cikk: Cikkek megtekintése MYSQL lekérdezés egyéni
  • cikk: speciális lekérdezések készítése Taxonómiákon
  • cikk: egyéni lekérdezés készítése eltolással és lapozással

Kóddokumentáció

  • osztály: WP_Query – az osztály részletes áttekintése WP_Query
  • Class: WP_Comment_Query – osztály a megjegyzésekkel kapcsolatos lekérdezésekhez
  • Class: WP_User_Query-osztály a felhasználóval kapcsolatos lekérdezésekhez
  • Object: $wpdb – áttekintés a $wpdb objektum használatáról
  • Function: set_query_var()
  • Function: Get_query_var()
  • Function: Query_posts ()-hozzon létre további egyéni lekérdezést
  • Function: Get_post () – vegyen egy elem azonosítóját, és adja vissza az adott cikk adatbázisában lévő rekordokat
  • function: get_posts() – egy speciális funkció, amely visszaadja az elemek tömbjét
  • Function: get_pages() – egy speciális funkció, amely visszaadja az oldalak tömbjét
  • Function: have_posts() – olyan feltétel, amely meghatározza, hogy a lekérdezés visszaadott – e egy cikket
  • Function: the_post () – a ciklus automatikus beállítására szolgál egy lekérdezés után
  • Function: rewind_posts () – törli az aktuális hurok
  • function: setup_postdata () – beállítja az adatokat egyetlen lekérdezés eredménye egy hurok
  • function: wp_reset_postdata() – visszaállítja az előző lekérdezést (általában egy hurok után egy másik cikluson belül)
  • Function: wp_reset_query()
  • Function: is_main_query() – biztosítja, hogy a megváltoztatott lekérdezés csak a fő lekérdezés legyen
  • Action Hook: pre_get_posts – változtassa meg a WordPress lekérdezéseket, mielőtt végrehajtják őket
  • Action Hook: the_post – a post objektum módosítása lekérdezés után
  • filter Hook: found_posts – megváltoztatja a found_posts objektum értékét wp_query
ez a cikk szerkesztésre szorulóként van megjelölve. A Codex szerkesztésével segíthet.

You might also like

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.