﻿id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc
18302,Improve child theme file inheritance by introducing `theme_url()` to locate a file URI,johnbillion,westi,"Child theme file inheritance isn't quite as slick as it could be. A child theme should be able to selectively override any of its parent theme's files (ie. CSS & JS), not just template files.

For example, there's no easy way for a parent theme to enqueue a JavaScript file that can be easily overridden by a child theme. This is because there's no URI version of `locate_template()` for themes to use.

Example: A parent theme includes a JavaScript file like so:

{{{
wp_enqueue_script( 'foo', get_template_directory_uri() . '/foo.js' );
}}}

A child theme couldn't simply include a `foo.js` file to override its parent's as the file is always loaded from the template directory, not the stylesheet directory. If the parent theme used `get_stylesheet_directory_uri()` instead, then the child theme could override it '''but''' it would '''have''' to override it, otherwise we'd end up with a file not found.

The answer is to introduce a function that does the same as `locate_template()` but returns a URI instead of a path.

Example usage:

{{{
wp_enqueue_script( 'foo', locate_theme_file( 'foo.js' ) );
}}}

This would load `foo.js` from the child theme if it existed, and the parent theme if not.

The function could also be used for CSS files:

{{{
wp_enqueue_style( 'bar', locate_theme_file( 'bar.css' ) );
}}}

And for images too:

{{{
<img src=""<?php echo locate_theme_file( 'icon.png' ); ?>"" />
}}}

Stand by for a patch.",enhancement,reviewing,normal,Future Release,Template,,normal,,has-patch westi-likes needs-unit-tests,DrewAPicture 24-7@… strider72 eddie.moya+wptrac@… picklesworth info@… justin@… amommy chip@… azizur nashwan.doaqan@…
