Когда получить часть шаблона() предпочтительнее, чем просто использовать 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 ?
4 answers
Рекомендуемым подходом для использования get_template_part
было бы включение битов кода, которые в противном случае часто повторялись бы во всех ваших шаблонах. Например, если бы в вашем цикле были определены условные обозначения, которые вы хотели включить в archive.php, search.php, single.php и т.д.
Это также позволяет дочерним темам переопределять этот файл и включать дополнительные более конкретные файлы. Например, если вы использовали get_template_part( 'loop', 'single' )
и в вашей теме есть только файл с именем loop.php тогда дочерняя тема может включать в себя файл с именем loop-single.php это переопределило бы ваш loop.php .
В основном это пользовательский тег для файлов шаблонов, отличных от верхнего, бокового или нижнего колонтитула.
Я не чувствую, что когда-либо существовала веская причина НЕ использовать часть get_template. До того, как он появился, темы WordPress были заполнены повторяющимся кодом и были очень трудоемкими + запутанными для внесения больших изменений. Наличие одного файла цикла, который всегда используется для отображения сообщений, является находкой как для дочерних тем, так и для тех, кто хочет "развить" темы. Если вы посмотрите на код для темы Двадцать одиннадцать (в настоящее время находится в разработке), вы увидите, что части шаблона были расширены в пост форматы, а также. Вы также заметите, что "Цикл" был удален из шаблона и помещен в вызывающий шаблон. Я думаю, что это лучший способ использовать части шаблонов для публикации контента и он гораздо более гибкий, чем двадцать десять.
Знаете ли вы, что другой шаблон ведет себя почти так же, как get_template_part()?
ИМХО, чем более гибкая родительская тема, тем лучше!
get_template_part()
следует (imho) использовать, если вы используете этот код более чем в одном шаблоне. Например, заголовок, навигационное меню или боковая панель.
Шаблоны следует (опять же, imho) использовать, если шаблон отличается от остальных шаблонов не только несколькими строками.
Лично я использую только простой index.php это включает условные теги для загрузки частей шаблона, специфичных для моего запроса, в мою небольшую базовую тему. В более широкой теме у меня есть только крючки в моем index.php файл и крючок в моем части шаблона условно (но настройка намного сложнее - в основном реальные материалы cms).
Основываясь на ответе Кайзера, get_template_part()
полезен для повторяющегося кода. Например, большинство ваших основных частей шаблона, вероятно, имеют очень похожий цикл. Помещение этого цикла в файл с именем loop.php
и вызов get_template_part('loop');
означает, что в следующий раз, когда вы захотите изменить код в цикле вашего сайта, вы сделаете это один раз в одном месте, а не дюжину или около того раз в дюжине или около того файлов шаблонов.
Это одно из огромных преимуществ get_template_part()
. Другой, и более важный, на мой взгляд, заключается в том, что он очень хорошо работает с родительскими/дочерними темами. Снова используя пример loop.php
, если у вас есть дочерняя тема и вы хотите изменить код цикла в своей дочерней теме, но не хотите изменять остальную часть шаблона, вам нужно будет переопределить только один файл loop.php
в вашей дочерней теме, а не дюжину или около того других файлов шаблонов.