it-swarm.dev

get_template_part vs akce háky v tématech

Zdá se mi, že oba z nich umožňují koncovému uživateli upravit téma, aniž by skutečně upravovali soubory motivů (prostřednictvím dětských témat).

Moje otázka zní, je jedna z metod preferována před druhou.

Například si vezměte téma, na kterém teď pracuji. Snažím se rozhodnout, zda jít s šablonami částí háčků.

<?php get_template_part('before_sitecontainer' ); ?>
<div id="sitecontainer" class="sitecontainer" <?php //closed in footer ?>>

<?php get_template_part( 'before_topcontainer' ); ?>
<div id="topcontainer ">

    <?php get_template_part( 'before_topedge_navigation' ); ?>
    <?php get_template_part( 'topedge_navigation' ); ?>

    <?php get_template_part( 'before_site_header' ); ?>
    <?php get_template_part( 'site_header' ); ?>

    <?php get_template_part( 'before_second_navigation' ); ?>
    <?php get_template_part( 'second_navigation' ); ?>

    <?php get_template_part( 'after_second_navigation' ); ?>

</div><!-- end topcontainer div -->
<?php get_template_part( 'after_topcontainer' ); ?>

Výše uvedené umožňuje uživateli motivu nahradit libovolnou část existujícího kódu pouhým vytvořením vhodně pojmenovaného souboru ve složce podřízeného tématu a přidáním nového kódu před/po každé předcházející sekci stejnou metodou - před/po šablonou části souborů vůbec neexistují v nadřazeném motivu a jsou tam prostě proto, aby jim umožnily vložit kód - a tato metoda nevyžaduje, aby porozuměli háčkům/filtrům, aby toho dosáhli.

Mohl bych samozřejmě dosáhnout stejného použití pomocí háčků a filtrů.

Je výhoda použít háčky/filtry? S ohledem na cílové publikum, které bude používat toto je rozhodně ne kód důvtipný. Mohu jim dát poměrně základní instrukce, které mohou dodržovat, aby použili metodu šablony, ale téměř jistě zmáčí ďábla z nich s háčky.

Nebo se vyskytují situace, kdy by člověk byl lepší než ten jiný?

14
Ashley G

Dávám přednost háčkům, protože jsou pružnější: můžete do nich zavěsit ze souboru functions.php tématu, ale také z pluginů. Snažím se vkládat tolik logiky do pluginů, aby témata obsahovala většinou rozložení.

Pokud použijete akční hák, je stále možné použít get_template_part() v tomto handleru . To vám dává to nejlepší z obou světů. Pravděpodobně byste dokonce mohli vytvořit výchozí háček, který volá get_template_part(), aby lidé, kteří nemají s kódováním mnoho zkušeností, mohli přidávat další soubory a jiní mohou tento háček odstranit, pokud nechtějí.

Pokud jde o výkon: get_template_part() používá ( v locate_template() ) file_exists() jeden, dva nebo čtyřikrát (v závislosti na tom, jak ho nazýváte). Objeví se file_exists() je velmi rychlý , a používá cache v PHP a možná i v OS. Takže to asi není problém.

8
Jan Fabry

Řekl bych, že hlavním rozdílem je čitelnost. Pokud vidíte několik, dobře pojmenovaných částí šablony, můžete snadno pochopit, co se děje. Pokud vidíte jen háček, budete muset prohledat zbytek tématu, abyste zjistili, co je připojeno k háčku.

4
Mild Fuzz

Je to (relativně) snadno odstranit funkci z háčku v dětské téma, ale mnohem těžší, aby to ignorovat nežádoucí rodičovské šablony.

V podstatě práce s háky je blíže k PHP straně a práce se šablonami je blíže HTML straně. Používám hybridní rodičovské téma, které je velmi háčkově orientované. Je to blaženost, dokud se nemusíte zbavit nějaké šablony rodičů.

Pro uživatele, kteří nejsou tech důvtipný ani je velmi dobrá volba. Proč by se s takovými tématickými interními potřebami chtěli nepořádat?

PS také zaznamenává problémy s výkonem. Věci s háčky se děje v paměti, věci se šablonami zabírají spoustu vyhledávání. Zvláště pokud píšete něco jako ve vašem příkladu.

PPS ne všichni preferují ... ale místo psaní rodičovského tématu od nuly, proč nebere existující rodičovský motiv a poskytne uživateli jednoduché dětské téma?

4
Rarst