Meg tudná magyarázni valaki, hogy működik ez a funkció? Tudom, hogy mit csinál, de amikor megnézem a forráskódot a húsz_ten sablonban, nem fogom megtudni, hogyan gyűjtik össze az összes hurkot egyetlen loop.php-ben (ezt a fájlt is láttam).

Tehát hogyan lehet például elvonni a sablon egy bizonyos közös részét, majd újra felhasználni más sablonokban?

Megjegyzések

Válasz

Néhány nagyon jó bevezető válasz itt.

Alapvetően a get_template_part() lehetővé teszi a témafejlesztők számára, hogy a sablonfájlok sorrendjét beállítsák. Gondolj hasonlóan a a CSS szelektorokra vonatkozó sajátosság. Valaminek a megtervezésekor a konkrétum minimális minimumával kell kezdeni, hogy ez könnyen felülírható legyen a tervezés azon részein, amelyek egyedi figyelmet igényelnek.

Így például , Ön egy blog stílusát formázza, és létrehoz egy ciklust .php fájl, amely jól használható a bejegyzések megjelölésére. De előre tervez, és később további sablonmeghatározókkal hívja meg a sablonfájljaiban – mondjuk, az index oldalon felhívja a get_template_part( "loop", "index" ); -t, az egyetlen sablonon a get_template_part( "loop", "single" );, az archív oldalakon hívja a get_template_part( "loop", "archive" ); stb. Ez nagyon megkönnyíti az utat, amikor úgy dönt, hogy az archívum oldalain lévő hurkot a kezdőlaptól eltérően jelöli meg: egyszerűen hozzon létre egy loop-archive.php sablon, és “inkább az általános loop.php .

De a get_template_part() mögött rejlő varázslat a locate_template() függvényben rejlik, amely először a téma könyvtárat, majd a szülő könyvtárat ellenőrzi (ha az egyik létezik) a nevű fájl számára. Ez nagyon hasznos a bővítmények fejlesztésében. Az egyik bővítményemben meghatároztam egy egyedi bejegyzés típust, és létrehoztam egy hurok sablon fájlt az egyéni típust a plugin könyvtáramban. De … hogy a bővítményemet használó témák felülírják a jelölésemet, ha úgy döntenek. Itt a locate_template() valóban csodákat tesz.

locate_template($template_names, $load = false, $require_once = true ) 

megkeresi az egyes neveket a $ template_names tömbben a stíluslap könyvtárban, majd a temp késői könyvtár. Az “true” megadása, mivel a $ load argumentum azt jelenti, hogy megköveteli az első megtalált fájlt, és üres karakterláncot ad vissza, ha nem található sablonfájl. Tehát ilyet tudok csinálni a beépülő modulomban:

if ( "" === locate_template( "loop-mycustomposttype.php", true, false ) ) include( "loop-mycustomposttype.php" ); 

… aminek remélhetőleg nagyon egyszerűvé kell tennie a témafejlesztők számára a plugin testreszabását pusztán azáltal, hogy egy loop-mycustomposttype.php nevű fájlt a témájukban.

Megjegyzések

  • Kérjük, cserélje le a locate_template szót. include(locate_template( 'loop-mycustomposttype.php')) Így lehetséges a változók átadása. Ezt ' megtaláltam itt link . ' rendkívül hasznos!
  • Ennek érdekében ' szükséges lesz ennek megváltoztatása, ha szintén. Így if ( false === include(locate_template( 'loop-mycustomposttype.php')) )
  • Ó, jó. Az általam megadott képlettel a require vagy a require_once hívás (locate_template -től származik) belül van egy függvényt, és így ' nincs hozzáférése az aktuális hatókörhöz.

Válasz

Nem minden hurok, a fő hurok. 😉 Nem számít, ha megnézi a kezdőlapját vagy egy kategóriáját, vagy mit tud, akkor mindig lesz egy fő hurokja. A fő hurok tartalmát az a lekérdezés határozza meg, amelyet “futtattak korábban a sablonod egyáltalán meghívásra került.

A loop.php sablon csupán a ciklusban lévő elemek fölé fut és formázza őket. Lásd a Codex dokumentációját .

Ha megnézzük a Twenty-Ten “loop.php-t, akkor láthatjuk, hogy a Twenty-Ten majd diverzifikálja belül az egyetlen sablonfájlt.

get_template_part() csak betölt egy sablonrészt és átfut rajta. Ugyanúgy kivonhatja a loop.php egyes részeit külön fájlokba, és cserélje le őket egy get_template_part("loop", "category") és így tovább hívásokra.

Vagy lehet egy-egy sablon minden egyes bejegyzéshez a ciklusban, és a loop.php csak a get_template_part("loop","post"); hívást kéri a while... záradékban. Csak rajtad múlik.

Válasz

A get_template_part kódexből :

<?php get_template_part( "loop", "index" ); ?>

a PHP-vel megköveteli () az első létező fájlhoz …

Olyan hatékonyan fog működni, mintha egy másik php fájlra lenne szüksége.

Frissítés : Van egy kis különbség a “megkövetelni” között – Ez egy függvénybe van csomagolva, így meg kell global, ha a sablonból bármilyen változót át akar adni a sablon részéhez.

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

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük