locate_template()

Возвращает имя файла шаблона с наивысшим приоритетом, который существует
Функция WordPress
INT 2.7.0
WordPress Icon

Описание функции

Функция locate_template() используется в WordPress для поиска и возврата имени файла шаблона с наивысшим приоритетом. Она проверяет наличие файлов шаблонов в указанном порядке и возвращает имя первого найденного файла.

Функция позволяет разработчикам создавать темы и плагины, которые могут переопределять шаблоны WordPress, чтобы изменить внешний вид и поведение сайта.

Использование

locate_template( string|array $template_names, bool $load = false, bool $load_once = true, array $args = array() ): string

Функция locate_template() принимает следующие аргументы:

  • $template_names (обязательный) — Строка или массив с именами файлов шаблонов, которые нужно найти. Файлы перечисляются в порядке приоритета.
  • $load (необязательный) — Если установлено в true, найденный файл шаблона будет загружен. По умолчанию: false.
  • $load_once (необязательный) — Определяет, должна ли быть использована функция require_once или require для загрузки файла шаблона. Не имеет эффекта, если $load установлено в false. По умолчанию: true.
  • $args (необязательный) — Дополнительные аргументы, передаваемые в шаблон. По умолчанию: array().

Функция locate_template() возвращает строку с именем найденного файла шаблона, если он был найден.

<?php
/**
 * Пример использования функции locate_template()
 */
// Массив с именами файлов шаблонов
$template_names = array(
  'template-parts/content.php',
  'template-parts/single.php',
  'template-parts/page.php'
);
// Поиск и загрузка файла шаблона
$template = locate_template( $template_names, true );
// Если файл шаблона найден
if ( $template ) {
  // Загрузка файла шаблона
  require_once $template;
} else {
  // Файл шаблона не найден
  echo 'Template not found.';
}
?>

В этом примере мы создаем массив с именами файлов шаблонов в порядке приоритета. Затем мы используем функцию locate_template() для поиска и возврата имени файла шаблона с наивысшим приоритетом. Если файл шаблона найден, мы загружаем его с помощью require_once. Если файл шаблона не найден, выводится сообщение «Template not found.»

Примеры использования

Поиск и загрузка шаблона


$template = locate_template( 'template-name.php' );

В этом примере функция locate_template() используется для поиска шаблона с именем «template-name.php». Если шаблон найден, то функция вернет полный путь к файлу шаблона. Если шаблон не найден, то функция вернет пустую строку.

Использование дополнительных аргументов


$args = array(
    'arg1' => 'value1',
    'arg2' => 'value2'
);
$template = locate_template( 'template-name.php', true, true, $args );

В этом примере функция locate_template() используется для поиска шаблона с именем «template-name.php» и передачи дополнительных аргументов. Параметр $load установлен в true, поэтому если шаблон найден, он будет загружен. Параметр $load_once установлен в true, поэтому шаблон будет загружен с помощью require_once. Аргументы $args передаются в шаблон для дальнейшего использования.

Проверка существования шаблона


$template_exists = locate_template( array( 'template1.php', 'template2.php', 'template3.php' ) );
if ( ! empty( $template_exists ) ) {
    echo 'Template exists!';
} else {
    echo 'Template does not exist!';
}

В этом примере функция locate_template() используется для проверки существования нескольких шаблонов. Функция принимает массив имен шаблонов и возвращает имя первого найденного шаблона. Если ни один из шаблонов не найден, функция вернет пустую строку. В данном примере мы проверяем, найден ли хотя бы один из трех шаблонов, и выводим соответствующее сообщение.

Определение приоритета шаблонов


$template = locate_template( array( 'template1.php', 'template2.php', 'template3.php' ) );
if ( $template === 'template1.php' ) {
    echo 'Using template1.php';
} elseif ( $template === 'template2.php' ) {
    echo 'Using template2.php';
} elseif ( $template === 'template3.php' ) {
    echo 'Using template3.php';
} else {
    echo 'No template found!';
}

В этом примере функция locate_template() используется для определения приоритета шаблонов. Функция принимает массив имен шаблонов и возвращает имя первого найденного шаблона. В данном примере мы проверяем, какой из трех шаблонов был найден, и выводим соответствующее сообщение.

Изменение поведения загрузки шаблона


$template = locate_template( 'template-name.php', true, false );
if ( ! empty( $template ) ) {
    echo 'Template found!';
} else {
    echo 'Template not found!';
}

В этом примере функция locate_template() используется для поиска шаблона с именем «template-name.php». Параметр $load установлен в true, поэтому если шаблон найден, он будет загружен. Параметр $load_once установлен в false, поэтому шаблон будет загружен с помощью require. Если шаблон найден, будет выведено сообщение «Template found!», в противном случае будет выведено сообщение «Template not found!».

Вопросы и ответы

Как найти и загрузить шаблон в WordPress?

Функция locate_template() в WordPress позволяет найти и загрузить шаблон с наивысшим приоритетом.

Для поиска шаблона необходимо передать его имя или массив имен в качестве аргумента $template_names.

Пример использования:


$template = locate_template( array( 'template-1.php', 'template-2.php' ) );

В этом примере функция locate_template() будет искать шаблоны ‘template-1.php’ и ‘template-2.php’ в порядке указания.

Если шаблон будет найден, функция вернет его имя в виде строки.

Как изменить порядок поиска шаблонов в WordPress?

По умолчанию, WordPress ищет шаблоны в следующем порядке: сначала в дочерней теме (если она активна), затем в родительской теме и, наконец, в папке шаблонов плагина.

Вы можете изменить порядок поиска шаблонов, используя фильтр ‘template_include’. Для этого вам нужно добавить свою функцию-обработчик и указать новый порядок поиска.

Пример использования:


function custom_template_include( $template ) {
    $new_template = locate_template( array( 'custom-template.php' ) );
    if ( $new_template ) {
        return $new_template;
    }
    return $template;
}
add_filter( 'template_include', 'custom_template_include' );

В этом примере мы добавляем свою функцию-обработчик ‘custom_template_include’, которая сначала ищет шаблон ‘custom-template.php’. Если он найден, он будет загружен вместо остальных шаблонов.

Как использовать locate_template() для создания условной загрузки шаблонов?

Функция locate_template() может быть использована для создания условной загрузки шаблонов в WordPress.

Пример использования:


if ( is_single() ) {
    $template = locate_template( array( 'single.php', 'default.php' ) );
} elseif ( is_archive() ) {
    $template = locate_template( array( 'archive.php', 'default.php' ) );
} else {
    $template = locate_template( array( 'index.php' ) );
}
if ( $template ) {
    load_template( $template );
}

В этом примере мы используем функцию is_single() и is_archive() для определения типа страницы. Затем мы используем функцию locate_template() для поиска соответствующего шаблона в заданном порядке. Если шаблон найден, мы используем функцию load_template() для его загрузки.

Как обрабатывать ошибки при использовании locate_template() в WordPress?

При использовании функции locate_template() в WordPress возможны ошибки, которые могут возникнуть при поиске шаблонов. Для обработки ошибок можно использовать следующий код:


$template = locate_template( array( 'template-1.php', 'template-2.php' ) );
if ( ! $template ) {
    // Шаблон не найден, выполняем действия по умолчанию
} else {
    // Шаблон найден, выполняем действия
}

Как определить, существует ли шаблон, найденный с помощью locate_template()?

Для определения существования найденного шаблона можно использовать следующий код:


$template = locate_template( array( 'template-1.php', 'template-2.php' ) );
if ( $template ) {
    // Шаблон существует, выполняем действия
} else {
    // Шаблон не существует, выполняем действия по умолчанию
}

Как использовать locate_template() для поиска шаблонов в дочерней теме?

Для поиска шаблонов в дочерней теме с помощью функции locate_template() можно использовать следующий код:


$template = locate_template( array( 'template-1.php', 'template-2.php' ), false, false );
if ( $template ) {
    // Шаблон найден в дочерней теме, выполняем действия
} else {
    // Шаблон не найден в дочерней теме, выполняем действия по умолчанию
}

Как изменить директорию поиска шаблонов с помощью locate_template() в WordPress?

Для изменения директории поиска шаблонов с помощью функции locate_template() в WordPress можно использовать следующий код:


function custom_locate_template( $template_names, $load = false, $load_once = true, $args = array() ) {
    $template = locate_template( $template_names, $load, $load_once, $args );
    if ( ! $template ) {
        $template = '/path/to/custom/template.php';
    }
    return $template;
}
$template = custom_locate_template( array( 'template-1.php', 'template-2.php' ) );

Функция locate_template() в WordPress позволяет искать шаблоны с высоким приоритетом и возвращает имя найденного шаблона. Ошибки при использовании функции можно обработать с помощью условных операторов. Для определения существования найденного шаблона также можно использовать условные операторы. Функцию можно использовать для поиска шаблонов в дочерней теме и изменения директории поиска шаблонов.

Связанные элементы

  • Функция get_template_directory(): Возвращает абсолютный путь к директории текущей темы.
  • Функция get_template_directory_uri(): Возвращает URI (Uniform Resource Identifier) к директории текущей темы.
  • Функция get_stylesheet_directory(): Возвращает абсолютный путь к директории активного стиля.
  • Функция get_stylesheet_directory_uri(): Возвращает URI (Uniform Resource Identifier) к директории активного стиля.
  • Функция get_template_part(): Включает файл шаблона из текущей темы или из директории шаблонов.
  • Функция load_template(): Подключает файл шаблона из текущей темы или из директории шаблонов.
  • Функция get_header(): Включает файл шаблона header.php из текущей темы или из директории шаблонов.
  • Функция get_footer(): Включает файл шаблона footer.php из текущей темы или из директории шаблонов.
  • Функция get_sidebar(): Включает файл шаблона sidebar.php из текущей темы или из директории шаблонов.
  • Хук template_include: Позволяет изменить файл шаблона, который будет загружен.
Обсуждение