Файли теми WordPress (ієрархія файлів шаблону)

  1. Підключення файлів теми (теорія)
  2. Типи сторінок і назви файлів
  3. записи
  4. Запис (запис post)
  5. вкладення
  6. Архіви
  7. мітка
  8. Сторінка архіву типу записи
  9. Сторінка архіву за датою (день, місяць, рік)
  10. сторінка пошуку
  11. сторінка блогу
  12. Вбудовування (embeds)
  13. Як це працює
  14. фільтри
  15. Інші файли теми

У цьому пості мова піде про те, які бувають назви у файлів теми WordPress і за показ якої сторінки на сайті відповідає кожен з них. Це дуже важливі, потрібні, і в той же час дуже прості, для розуміння, знання. Ними повинен володіти кожен, хто працює з WordPress. Нижче повністю розписана структура файлів теми WordPress і порядок їх підключення (ієрархія).

Про ієрархії файлів теми я згадував у статті «Умовні теги в WordPress» . А нижче теж саме, тільки докладніше і зрозуміліше.

Підключення файлів теми (теорія)

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

Наприклад, ми заходимо на сторінку рубрики «Модулі» з ярликом plugins і id 25 - http://example.com/category/plugins. Тоді для генерації коду цієї сторінки WordPress буде по черзі перевіряти наявність наступних файлів (перевірка перерветься на першому існуючому файлі):

  • category-plugins.php
  • category-25.php
  • category.php
  • archive.php
  • index.php

Повна схема для всіх видів сторінок і їх файлів виглядає так:

Ще одна схема, можливо вона зрозуміліше (стара):

меню

Типи сторінок і назви файлів

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

Нижче вказана сторінка сайту і відповідний їй список PHP файлів. Такі файли повинні знаходиться в кореневій папці теми.

записи

Сторінка (запис page)

Запис (запис post)

  • single-post- {ярлик_запісі} .php
  • single-post.php
  • single.php
  • singular.php
  • index.php

Довільний тип запису

  • {Любое_названіе} .php (для деревовидного типу з підтримкою шаблонів . З WP 4.7)
  • single- {post_type} - {ярлик_запісі} .php
  • single- {post_type} .php
  • single.php
  • singular.php
  • index.php

вкладення

  • {Начало_MIME_тіпа} .php
  • {Конец_MIME_тіпа} .php
  • {Начало_MIME_тіпа} - {конец_MIME_тіпа} .php
  • attachment.php
  • single-attachment- {ярлик_вложенія} .php (дозволяє вказати шаблон для окремої картинки)
  • single-attachment.php (теж що і attachment.php)
  • single.php
  • singular.php
  • index.php

Під його початку до кінця MIME типу, мається увазі перша і остання частина MIME типу, розділена /. Наприклад, MIME-тип текстового файлу: 'text / plain' і значить буде перевірятися наявність файл text.php, потім plain.php, потім text-plain.php.

Повний список MIME типів дивіться в описі get_allowed_mime_types () .

меню

Архіви

Рубрика

  • category- {ярлик} .php
  • category- {id} .php
  • category.php
  • archive.php
  • paged.php (якщо сторінка пагінацію)
  • index.php

мітка

  • tag- {ярлик} .php
  • tag- {id} .php
  • tag.php
  • archive.php
  • paged.php (якщо сторінка пагінацію)
  • index.php

таксономія

  • taxonomy- {ярлик_таксономіі} - {ярлик_елемента} .php
  • taxonomy- {ярлик_таксономіі} .php
  • taxonomy.php
  • archive.php
  • paged.php (якщо сторінка пагінацію)
  • index.php

Сторінка архіву типу записи

  • archive- {ярлик_тіпа_запісі} .php
  • archive.php
  • paged.php (якщо сторінка пагінацію)
  • index.php

сторінка автора

  • author- {nickname} .php
  • author- {id} .php
  • author.php
  • archive.php
  • paged.php (якщо сторінка пагінацію)
  • index.php

Сторінка архіву за датою (день, місяць, рік)

  • date.php
  • archive.php
  • paged.php (якщо сторінка пагінацію)
  • index.php

404 сторінка

сторінка пошуку

Головна сторінка

  • front-page.php
  • (Логіка постійних сторінок, якщо для головної обрана сторінка)
  • home.php
  • index.php

сторінка блогу

Сторінка блогу з'являється, коли для головної обрана постійна сторінка

Вбудовування (embeds)

Шаблони вбудовування використовуються коли запитується запис через REST API. Вбудовування з'явилися у версії 4.5 і дозволяють вбудовувати ваші записи в чужі сайти. Див. get_post_embed_url ()

  • embed- {post-type} - {post_format} .php
  • embed- {post-type} .php
  • embed.php

Щоб змінити тільки контент вбудовування, можна в темі створити файл embed-content.php і описати там HTML. Оригінальний HTML знаходиться в файлі движка /wp-includes/theme-compat/embed-content.php

Як це працює

За всю логіку: який файл підключати, відповідає файл ядра wp-includes / template-loader.php . Якщо розібратися, в ньому все описано. Але, це заняття не особливо цікаве, тому я його розпишу.

Насамперед. template-loader.php підключається після того як завантажиться все середовище WordPress. Після того, як відпрацює файл wp-load.php і буде опрацьовано основний запит - функція wp () . Тобто template-loader.php підключається в самому-самому кінці PHP скрипта ...

Спочатку спрацьовує хук template_redirect . У цьому хук можна зробити якісь перевірки і якщо треба перенаправити на інший URL. У ньому потрібно обривати роботу скрипта через die (). Тобто якщо цей хук щось змінює, то на цьому робота файлу template-loader.php повинна закінчитися і ми «відлітаємо» на якусь іншу сторінку.

Далі спрацьовує нікому не цікавий хук exit_on_http_head. Він дозволяє зробити так, щоб при HTTP HEAD запиті що-небудь виводилося на екран ...

Далі йдуть перевірки за всіма умовним тегам де з'ясовується який файл шаблону підходить під поточний запит. Перевіряється умовний тег, потім ще один і ще ... Як тільки один з умовних тегів спрацював, викликається відповідна функція, яка знаходить відповідний файл шаблону і повертає шлях до нього. Всі такі функції описані в get_query_template () .

Далі - шлях до файлу теми визначено! Тепер він проходить через фільтр template_include . Який дозволяє нам змінити файл шаблону для поточного запиту.

Далі, файл підключається в PHP і запускається візуальна частина генерації сторінки.

меню

фільтри

Ієрархію файлів можна змінити через динамічні фільтри:

  • (Type) _template_hierarchy - фільтрує масив назв файлів ієрархії, за яким буде йти пошук потрібного файлу. З WP 4.7.

  • (Type) _template - фільтрує шлях до вже визначився файлу шаблону.

Всі варіанти параметра type дивіться в однойменному параметр $ type функції get_query_template () . Ось вони:

  • index
  • 404
  • archive
  • post_type_archive
  • author
  • category
  • tag
  • taxonomy
  • date
  • home
  • front_page
  • page
  • paged
  • search
  • single
  • singular
  • attachment
  • comments_popup

Приклад використання такого фільтра дивіться у відповіді на це питання .

меню

Інші файли теми

Файли нижче також використовуються в темі, але вони просто підключаються і не беруть участь в ієрархії. Наприклад файл sidebar.php підключається в будь-якому файлі теми за допомогою функції get_sidebar () .

Список таких «підключаються» файлів.

-

джерело