get_theme_file_path()WP 4.7.0

Получает путь до указанного файла темы. Учитывает дочерние темы.

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

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

С появлением этой функции не нужно вручную писать проверки с использованием get_template_directory_uri() и get_template_directory().

Используйте get_parent_theme_file_path(), когда НЕ нужно учитывать дочернюю тему.

Используйте get_theme_file_uri(), когда нужно получить URL файла, а не его путь.

1 раз — 0.000051 сек (очень быстро) | 50000 раз — 0.55 сек (очень быстро) | PHP 7.1.2, WP 4.7.3
Хуки из функции

Возвращает

Строку. Путь до файла с учетом дочерней темы.

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

get_theme_file_path( $file );
$file(строка)

Название файла который нужно найти в теме. Например file.php. Можно указать вложенный файл inc/file.php или так /inc/file.php.

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

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

Примеры

1

#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
*/
0

#2 Подключение файла из каталога темы inc

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

#3 Подключим файл темы учитывая дочернюю тему.

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

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

Список изменений

С версии 4.7.0 Введена.

Код get_theme_file_path() WP 6.5.2

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;
	}

	/**
	 * Filters the path to a file in the theme.
	 *
	 * @since 4.7.0
	 *
	 * @param string $path The file path.
	 * @param string $file The requested file to search for.
	 */
	return apply_filters( 'theme_file_path', $path, $file );
}