Когда получить часть шаблона() предпочтительнее, чем просто использовать template.php файлы?


В этот пост на wordpress.stackexchange.com Я спросил, является ли использование get_template_part(), как показано в теме TwentyTen, рекомендуемой наилучшей практикой. Общее мнение, которое я получил, состояло в том, что это не обязательно лучшая практика во всех ситуациях.

Тогда этот связанный с этим вопрос: можете ли вы привести мне пример, в котором использование get_template_part() было бы рекомендуемым подходом, а не простым определением отдельного template.php файлы?

Например, я могу либо определить archive.php, single.php и page.php; или я могу определить loop-archive.php, loop-single.php и loop-page.php .

В каких обстоятельствах было бы предпочтительнее использовать get_template_part ("цикл", "одиночный") и использовать рычаги loop-single.php по сравнению с простым определением single.php ?

Author: Community, 2011-05-06

4 answers

Рекомендуемым подходом для использования get_template_part было бы включение битов кода, которые в противном случае часто повторялись бы во всех ваших шаблонах. Например, если бы в вашем цикле были определены условные обозначения, которые вы хотели включить в archive.php, search.php, single.php и т.д.

Это также позволяет дочерним темам переопределять этот файл и включать дополнительные более конкретные файлы. Например, если вы использовали get_template_part( 'loop', 'single' ) и в вашей теме есть только файл с именем loop.php тогда дочерняя тема может включать в себя файл с именем loop-single.php это переопределило бы ваш loop.php .

В основном это пользовательский тег для файлов шаблонов, отличных от верхнего, бокового или нижнего колонтитула.

 5
Author: Chris_O, 2011-05-06 14:41:51

Я не чувствую, что когда-либо существовала веская причина НЕ использовать часть get_template. До того, как он появился, темы WordPress были заполнены повторяющимся кодом и были очень трудоемкими + запутанными для внесения больших изменений. Наличие одного файла цикла, который всегда используется для отображения сообщений, является находкой как для дочерних тем, так и для тех, кто хочет "развить" темы. Если вы посмотрите на код для темы Двадцать одиннадцать (в настоящее время находится в разработке), вы увидите, что части шаблона были расширены в пост форматы, а также. Вы также заметите, что "Цикл" был удален из шаблона и помещен в вызывающий шаблон. Я думаю, что это лучший способ использовать части шаблонов для публикации контента и он гораздо более гибкий, чем двадцать десять.

Знаете ли вы, что другой шаблон ведет себя почти так же, как get_template_part()?

ИМХО, чем более гибкая родительская тема, тем лучше!

 2
Author: mfields, 2021-01-26 19:36:02

get_template_part() следует (imho) использовать, если вы используете этот код более чем в одном шаблоне. Например, заголовок, навигационное меню или боковая панель.

Шаблоны следует (опять же, imho) использовать, если шаблон отличается от остальных шаблонов не только несколькими строками.

Лично я использую только простой index.php это включает условные теги для загрузки частей шаблона, специфичных для моего запроса, в мою небольшую базовую тему. В более широкой теме у меня есть только крючки в моем index.php файл и крючок в моем части шаблона условно (но настройка намного сложнее - в основном реальные материалы cms).

 1
Author: kaiser, 2011-05-06 14:34:59

Основываясь на ответе Кайзера, get_template_part() полезен для повторяющегося кода. Например, большинство ваших основных частей шаблона, вероятно, имеют очень похожий цикл. Помещение этого цикла в файл с именем loop.php и вызов get_template_part('loop'); означает, что в следующий раз, когда вы захотите изменить код в цикле вашего сайта, вы сделаете это один раз в одном месте, а не дюжину или около того раз в дюжине или около того файлов шаблонов.

Это одно из огромных преимуществ get_template_part(). Другой, и более важный, на мой взгляд, заключается в том, что он очень хорошо работает с родительскими/дочерними темами. Снова используя пример loop.php, если у вас есть дочерняя тема и вы хотите изменить код цикла в своей дочерней теме, но не хотите изменять остальную часть шаблона, вам нужно будет переопределить только один файл loop.php в вашей дочерней теме, а не дюжину или около того других файлов шаблонов.

 1
Author: John P Bloch, 2011-05-06 14:42:18