Ось тут дуже хороші вступні відповіді.
В основному, get_template_part()
дозволяє розробникам тем встановити порядок специфіки файлів шаблонів. Подумайте про це аналогічно специфіці, як це стосується селекторів CSS. Розробляючи щось, ви хочете почати з чистого мінімуму специфіки, щоб його можна було легко перекрити в частинах дизайну, які потребують індивідуальної уваги.
Наприклад, ви створюєте блог і створюєте файл loop.php, який добре працює для розмітки дописів. Але ви плануєте заздалегідь, і ви називатимете його у своїх файлах шаблонів пізніше з додатковими специфікаторами контексту - скажімо, на сторінці індексу, ви телефонуєте get_template_part( 'loop', 'index' );
, на єдиному шаблоні, ви дзвоните get_template_part( 'loop', 'single' );
, на архівних сторінках, ви дзвоните get_template_part( 'loop', 'archive' );
тощо. Це робить його дуже легко вниз по дорозі, коли ви вирішите розмітити цикл на сторінках архіву на відміну від домашньої сторінки: просто створіть шаблон loop-archive.php, і він буде використовуватися, а не загальний loop.php .
Але магія позаду get_template_part()
полягає у функції locate_template()
, яка перевіряє спочатку тематичний каталог, а потім батьківський каталог (якщо такий існує) на ім'я файлу. Це дуже корисно для розробки плагінів. В одному з моїх плагінів я визначаю користувальницький тип публікації та створюю файл шаблону циклу для цього користувальницького типу публікації в моєму каталозі плагінів. Але ... я хочу дозволити темам за допомогою мого плагіна переосмислити мою розмітку, якщо вони захочуть. Тут locate_template()
справді твориться чудеса.
locate_template($template_names, $load = false, $require_once = true )
шукатиме кожне з імен у масиві $ template_names у каталозі стилів, а потім у каталозі шаблонів. Передача "true" як аргументу $ load означає, що він вимагатиме першого знайденого файлу, і поверне порожню рядок, якщо файл шаблону не знаходився. Тож я можу зробити щось подібне у своєму плагіні:
if ( '' === locate_template( 'loop-mycustomposttype.php', true, false ) )
include( 'loop-mycustomposttype.php' );
... що, сподіваємось, дуже полегшить розробникам тем налаштування мого плагіна, включивши у свою тему файл під назвою loop-mycustomposttype.php .