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
- Próbálja meg megtekinteni a codex.wordpress.org/Function_Reference/get_template_part
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 )
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 arequire_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.