locate_template()
Знаходить відповідний серверний шлях до вказаного файлу шаблону. Під час пошуку враховується дочірня тема. Можна вказати, щоб файл одразу підключався до PHP.
У функцію можна передати масив назв файлів. Тоді вона перевірятиме по черзі наявність файлів і при першому знайденому файлі відразу поверне шлях до нього (наступні оброблятися не будуть). Якщо вказати другий параметр, цей файл буде підключено до PHP. Розглянемо приклад:
$files = array( 'foot.php', // немає 'header.php', // існує, буде повернуто 'baz.php', // перевірятися не буде ); $ file_path = locate_template ($ files); echo $file_path; // виведе: /home/wp-kama.ru/wp-content/themes/wp-kama/header.php
Цей код виконає пошук файлів у такому порядку. При першому виявленні будь-якого файлу, пошук зупинитися:
- foot.php у дочірній темі
- foot.php у батьківській темі
- header.php у дочірній темі
- header.php у батьківській темі
- baz.php у дочірній темі
- baz.php у батьківській темі
Якщо у другому параметрі замість false вказати true. Цей файл буде підключений до PHP функцій require_once() .
Використовує WordPress константи (шляху): STYLESHEETPATH потім TEMPLATEPATH. Це означає, що дочірня тема має пріоритет над батьківською і може переписувати її файли.
При підключенні файлів, коли другий параметр дорівнює true, використовується функція load_template() .
load_template()
get_query_template() ,
get_template_part() ,
get_sidebar() ,
get_header() ,
get_footer()
(дуже швидко) | 50000 разів – 0.16 сек
(дуже швидко) |
PHP 7.1.2, WP 4.7.3
Хуків немає.
Повертає
Строку
.
- Шлях до файлу, якщо його знайшли.
- Порожній рядок, якщо файл не вдалося знайти.
Використання
locate_template($template_names, $load, $require_once, $args);
-
$template_names
(рядок/масив) (обов’язковий) Масив файлів шаблону, який потрібно підключити. Файли підключатимуться за вказаним у масиві порядку.
Для файлів необхідно вказувати розширення (пр: header.php).
Замість масиву можна вказати назву файла у вигляді рядка.
-
$load
(логічний) -
true означає, що файл має бути підключений. В іншому випадку функція нічого не підключить, а просто поверне шлях до вказаного файлу.
Типово: false -
$require_once
(логічний) -
Якщо вказати true, файл шаблону буде завантажений за допомогою PHP функції
require_once . При false буде використано функцію require. Немає сенсу вказувати цей параметр, якщо
$load встановлено false.
Типово: true -
$args
(масив) (З WP 5.5) -
Додаткові параметри для файлу, що підключається. Використовуйте змінну
$args у файлі, що підключається.
За замовчуванням: array()
Приклади
#1 Перевіримо наявність файлу перед підключенням
Створимо можливість виводити контент сторінки якось особливо у разі потреби. Для цього потрібно буде в темі створити файл content-СЛАГ_СТРАНИЦИ.php і його код буде використаний замість функції the_content() :
$pageName = $post->post_name; $locate_template = locate_template("content-$pageName.php"); if( $locate_template ) { // ОК, підключаємо файл шаблону require $locate_template; // або так: //get_template_part('content', $pageName ); } else { // Файл не знайдено, завантажуємо контент стандартно the_content(); }
#2 Отримання шляху файлу
echo locate_template('header.php'); //> /home/example.com/public_html/wp-content/themes/pink/header.php
#3 Можна вказувати підпапки
У цю функцію можна вказати не лише назву файлу, а й відносний шлях від кореня теми:
locate_template('inc/filename.php', true);
Підключить файл filename.php , який знаходиться в папці inc у каталозі дочірньої теми або просто теми, якщо немає дочірньої.
список змін
З версії 2.7.0 | Введено. |
З версії 5.5.0 | The $args parameter був added. |