get_template_part vs гачки дій у темах


15

Мені здається, обидва вони надають можливість кінцевому користувачеві змінити тему, фактично не редагуючи файли тем (через дочірні теми).

Моє запитання, чи є один метод кращим перед іншим.

Для прикладу візьміть тему, над якою я зараз працюю. Я намагаюся вирішити, чи варто йти з шаблоновими частинами гачків.

<?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' ); ?>

Вищезазначене дозволяє користувачеві теми замінити будь-який розділ існуючого коду, просто створивши відповідний ім’я в файлі дочірньої теми, а також додавши новий код до / після кожного попереднього розділу тим же методом - шаблон до / після файли частин взагалі не існують у батьківській темі, а вони просто для того, щоб вони могли вставити код - і цей метод не вимагає, щоб вони розуміли гачки / фільтри для цього.

Звичайно, я міг би досягти цього за допомогою гачків та фільтрів.

Чи є перевага використовувати замість цього гачки / фільтри? Беручи до уваги цільову аудиторію, яка буде використовувати це, рішуче ні кодом. Я можу дати їм відносно основну інструкцію, яку вони можуть дотримуватися, щоб використовувати шаблонний метод, але майже напевно збентежуватимуть чорта з них гачками.

Або бувають ситуації, коли один може бути кращим за інших у межах однієї теми?

Відповіді:


8

Я віддаю перевагу гачкам, оскільки вони більш гнучкі: ви можете підключити їх до functions.phpфайлу теми , а також із плагінів. Я намагаюся вкласти якомога більше логіки в плагіни, щоб теми містили в основному матеріали для верстки.

Якщо ви користуєтеся гачком дій, його все одно можна використовувати get_template_part() в цьому оброблювачі гака . Це дає вам найкраще з обох світів. Можливо, ви навіть можете створити гачок за замовчуванням, який дзвонить get_template_part(), так що люди, які не мають великого досвіду кодування, можуть додавати додаткові файли, а інші можуть видалити цей гачок, якщо цього не хочуть.

Щодо продуктивності: get_template_part()використовує ( вlocate_template() ) file_exists()один, два чи чотири рази (залежно від того, як ви це називаєте). Він з'являється file_exists()дуже швидко , і використовує кешування в PHP, а може навіть і в ОС. Тож це, мабуть, не проблема.


Що має сенс. Частина моєї дизайнерської спрямованості полягала в тому, щоб усунути потребу в плагінах у найбільш поширених ситуаціях використання, в той час як все ще зберігається можливість використовувати їх для тих, хто хоче. Мій цільовий клієнт дуже мало знає про WordPress або плагіни, не кваліфікований, щоб розповідати гарні плагіни від поганого (головна слабкість IMO плагінів) і не хоче мати справу з оновленням та керуванням кількома частинами програмного забезпечення. Тому мені доводиться будувати багато функцій прямо в темах, щоб забезпечити те, що вони хочуть: простий у використанні, простий в обслуговуванні, одностороннє рішення.
Ешлі Г

4

Я б сказав, що головна відмінність - читабельність. Якщо ви побачите кілька добре названих частин шаблону, ви можете зрозуміти, що відбувається легко. Якщо ви просто бачите гачок, вам потрібно буде проглянути решту теми, щоб встановити, що додається до гачка.


1
Так, це має сенс і є частиною того, що я намагався досягти за допомогою коду прикладу.
Ешлі Г

4

Видалити функцію з гачка в дочірній тематиці (відносно) легко, але набагато складніше змусити її ігнорувати небажаний батьківський шаблон.

По суті, робота з гачками знаходиться ближче до PHP, а робота з шаблонами - ближче до HTML-сторінки. Я використовую гібридну батьківську тему, яка дуже орієнтована на гачок. Це право блаженства, поки вам не потрібно позбутися шаблону батьків.

Для користувачів, які не знають технологій, це не дуже приємний варіант. Навіщо їм взагалі потрібно возитися з такими темами?

PS також відзначає проблеми з продуктивністю. Речі з гачками трапляються в пам'яті, речі з шаблонами займають велику кількість дискових запитів. Особливо, якщо ви пишете щось на зразок у своєму прикладі.

PPS не всі переваги ... але замість того, щоб писати батьківську тему з нуля, чому б не взяти існуючу батьківську тему і не надати просту дочірню тему користувачеві?


Ігнорувати батьківський шаблон було б так просто, як створити порожній файл шаблону для його заміни, я би подумав. Набагато простіше, ніж возитися з гачками (а для цього і PHP) для не кмітливого користувача. Хоча для когось із досвідом гачки були б набагато простішими. Щодо чому, завжди є такі, хто хоче налаштувати, ви навіть визнали, що це робите. Щодо того, чому я створюю тему, це напрямок, в якому я хочу взяти свій бізнес. Створення навколо когось іншого бізнесу не здається мені дуже перспективним доказом, також тому, що більшість існуючих тем ІМО залишають бажати кращого. Я думаю, що я можу зробити краще.
Ешлі Г

Хоча хороші моменти щодо продуктивності. Хоча, оскільки wordpress був розроблений для роботи з get_template_part, я б подумав, що це буде не такий великий показник продуктивності. У когось є орієнтири щодо цього?
Ешлі Г

Я бачу, що ви маєте на увазі під ігноруванням частини шаблону. Не так просто, як я думав
Ешлі Г

Насправді це так само просто, як розмістити порожній файл шаблону в дочірній папці, якщо він знаходиться в корені папки. Там, де стає важко, коли файли шаблонів знаходяться в папках папки тематики батьків / дітей
Ешлі G

Власне, навіть папки - це не проблема. У мене просто папка названа неправильно (впевнений знак, що я працюю надто пізно LOL). Щоб змінити частину шаблону, потрібен лише файл з тим самим іменем у тому ж шляху у дитини, що був у батьків
Ешлі G
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.