get_theme_file_uri( string $file =  ): string

Retrieves the URL of a file in the theme.

Description

Searches in the stylesheet directory before the template directory so themes which inherit from a parent theme can just override one file.

Parameters

$filestringoptional
File to search for in the stylesheet directory.

Default:''

Return

string The URL of the file.

Source

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

	$stylesheet_directory = get_stylesheet_directory();

	if ( empty( $file ) ) {
		$url = get_stylesheet_directory_uri();
	} elseif ( get_template_directory() !== $stylesheet_directory && file_exists( $stylesheet_directory . '/' . $file ) ) {
		$url = get_stylesheet_directory_uri() . '/' . $file;
	} else {
		$url = get_template_directory_uri() . '/' . $file;
	}

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

Hooks

apply_filters( ‘theme_file_uri’, string $url, string $file )

Filters the URL to a file in the theme.

Changelog

VersionDescription
4.7.0Introduced.

User Contributed Notes

  1. Skip to note 3 content

    You can use this function to include local theme assets (like images) in your block patterns:

    <!-- wp:image {"id":12,"width":640,"height":400,"sizeSlug":"full","linkDestination":"none"} -->
    <figure class="wp-block-image size-full"><img src="<?php
    echo esc_url( get_theme_file_uri( 'assets/img/my-asset.png' ) ); ?>" alt="<?php _e( 'Asset description' ) ?>" width="640" height="400"/></figure>
    <!-- /wp:image -->

You must log in before being able to contribute a note or feedback.