В чем преимущества ОРИГИНАЛЬНОЙ структуры шаблона wordpress?
Предварительное условие: исходя из пользовательского мира PHP-приложений (с использованием symfony, zend и т. Д.), Для меня кажется неестественным разделять шаблоны так, как это делается в оригинальной теме wordpress. например, верхняя часть страницы находится в верхнем колонтитуле, в центре "индекс, страница..." и нижняя часть в нижнем колонтитуле.
Пример текущей структуры: index.php
[include header]
... main content...
[include footer]
И header.php
<html>
<head>
....
</head>
<body>
.....
И footer.php
.....
</body>
</html>
Я больше привык к структуре где у вас есть макет и внутри него есть другой (частичный) шаблон. пример: index.php шаблон
<html>
<head> [include header] </head>
<body>
[include body] [include footer]
</body>
</html>
Поэтому я пытаюсь подумать о преимуществах оригинальной структуры шаблона wordpress.
Вопрос: Каковы ПРЕИМУЩЕСТВА ОРИГИНАЛЬНОЙ структуры шаблона wordpress в отличие от ВТОРОГО примера, который я описал выше?
2 answers
Во-первых, как подразумевает @Toscho, get_header()
и get_footer()
теги шаблонов просто включают файлы с именами header.php
и footer.php
соответственно. Оба тега шаблона вызываются из файлов шаблона , и вы можете разделить содержимое между файлом шаблона (index.php
) и частью шаблона файла (header.php
, footer.php
) так, как ты захочешь. Таким образом, WordPress, безусловно, может приспособить ваш последний пример.
Тем не менее, реальная сила в стандарте, "WordPress" метод разделения контента происходит из иерархии шаблонов WordPress . В WordPress файл index.php
на самом деле является последним используемым файлом шаблона . Это резервный файл шаблона по умолчанию, когда не найден другой, более специфичный файл шаблона:
Так как любой из 7 (первичных) до 16 (вторичных) файлов шаблонов (и это только для общедоступной темы; специально разработанные темы могут содержать любое количество файлов шаблонов) будет использоваться, в зависимости от текущего контекста, метод разделения разметки "WordPress", минимизирующий количество дублированного кода.
Допустим, вы хотите изменить свой доктайп с переходного на строгий (или вы хотите перейти на HTML5), или вы хотите изменить заявление об авторских правах в нижнем колонтитуле вашего сайта. Используя метод разделения разметки "WordPress", вы вносите эти изменения в один файл . Используя последний метод разделения контента, вы вносите эти изменения от семи до шестнадцати (или более) раз.
Редактировать
Я подумал, что этот вопрос возникнет:
Я хочу услышать ваше мнение относительно следующей ситуации. Допустим, нам нужно включить "теги og (мета-теги Open Graph)", и у них другой формат для "индекса","single.php ""страница" "архив" шаблонов. Если у нас есть структура, подобная "оригинальной структуре темы wp", то мы должны использовать условные операторы (если...еще) в "header.php "файл, верно? И я думаю, все согласны с тем, что меньше "условных утверждений", лучшая производительность по запросу, верно?
У нас есть несколько вариантов:
- Используйте условные выражения запроса PHP непосредственно внутри
header.php
- Используйте условные выражения запроса PHP в обратных вызовах, подключенные к
wp_head
(илиwp_enqueue_scripts
и т.д.) - Используйте
get_header( $context )
, где$context
основано на иерархии шаблонов и будет включатьheader-$context.php
, если найдено, илиheader.php
, если не найдено.
Но несколько вариантов на самом деле не решают ваш основной вопрос относительно снижения производительности. Лично я считаю, что снижение производительности незначительно, потому что все условные выражения запроса в любом случае кэшируются как часть кэша объектов запроса. Так что их вызов на самом деле не должен привести к значимому снижению производительности.
Здесь нет противоречия, вы можете использовать и то, и другое.
Пример
<!doctype html>
<html <?php language_attributes(); ?>>
<head>
<?php get_header(); ?>
</head>
<body>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php get_footer(); ?>
</body>
</html>
Преимущество системы WordPress заключается в том, что вы можете структурировать свои шаблоны по своему усмотрению.