Функция get_theme_file_path() в WordPress: путь к файлу в теме

# get_theme_file_path() │ WP 4.7.0

Функция get_theme_file_path() определяет путь к указанному файлу темы. Она работает с дочерними темами (child themes).

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

Функция сначала ищет файл в дочерней теме. Если в дочерней теме файла нет, она находит путь к файлу в основной (родительской) теме.

Эту функцию нужно использовать всегда, когда вы создаете тему, чтобы правильно работать с файлами дочерних тем. 

Когда вы используете get_theme_file_path(), вам не нужно отдельно проверять поддержку дочерних тем с помощью функций get_template_directory_uri() и get_template_directory().

Если вам нужен URL файла, а не его путь, используйте get_theme_file_uri().

**Время выполнения:**  
1 раз — 0.000051 сек (очень быстро)  
50000 раз — 0.55 сек (очень быстро)  
PHP 7.1.2, WP 4.7.3

## Возвращаемое значение

Функция возвращает строку — путь к файлу.

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

```php
$filepath = get_theme_file_path( $file );

Параметры

  • $file (строка): Имя файла, который нужно найти в директории темы. Например, file.php. Можно указывать относительный путь к файлу, например: inc/file.php или /inc/file.php.

Если вы оставите этот параметр пустым, функция вернет путь к активной теме. Смотрите get_stylesheet_directory().

По умолчанию: ''

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

Пример 1: Получаем путь к файлу

echo get_theme_file_path( 'myfile.php' );

Результат будет следующим:

/home/site/www/wp-content/themes/wpkama-child/myfile.php
или 
/home/site/www/wp-content/themes/wpkama/myfile.php

Пример 2: Подключаем файл темы с учетом дочерней темы

require_once( get_theme_file_path( 'myfile.php' ) );

Это означает, что функция проверит, есть ли файл myfile.php в дочерней теме. Если его нет, файл будет подключён из родительской темы.

Пример 3: Включаем файл из директории темы inc

include get_theme_file_path( '/inc/template.php' );

Изменения

Модель функции была введена в версии 4.7.0.

Код функции

function get_theme_file_path( $file = '' ) {
    $file = ltrim( $file, '/' );

    $stylesheet_directory = get_stylesheet_directory();
    $template_directory   = get_template_directory();

    if ( empty( $file ) ) {
        $path = $stylesheet_directory;
    } elseif ( $stylesheet_directory !== $template_directory && file_exists( $stylesheet_directory . '/' . $file ) ) {
        $path = $stylesheet_directory . '/' . $file;
    } else {
        $path = $template_directory . '/' . $file;
    }

    /**
     * Фильтрует путь к файлу в теме.
     *
     * @since 4.7.0
     *
     * @param string $path Путь к файлу.
     * @param string $file Запрашиваемый файл для поиска.
     */
    return apply_filters( 'theme_file_path', $path, $file );
}

Связанные функции

Вот несколько полезных связанных функций:

  • get_parent_theme_file_path()
  • get_parent_theme_file_uri()
  • get_stylesheet_directory()
  • get_stylesheet_directory_uri()
  • get_template_directory()
  • get_template_directory_uri()
  • get_theme_file_uri()
  • get_theme_root()
  • get_theme_root_uri()
  • register_theme_directory()

В этой статье рассматривается использование функции get_theme_file_path() в WordPress, которая полезна для работы с темами и их файлами.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *