[theme-reviewers] get_template_part vs locate_template

Justin Tadlock justin at justintadlock.com
Sat Apr 23 17:01:24 UTC 2011


Also, when you use something like:

get_template_part( 'dir/slug' )

You create a weird hook:

get_template_part_dir/slug

On 4/23/2011 11:56 AM, Justin Tadlock wrote:
> get_template_part() was never meant to allow anything other than a 
> slug (not a directory and slug).  Westi (who created the function) has 
> stated that this should be considered a bug.  If you look at the 
> inline documentation for get_template_part() in the 
> wp-includes/general-template.php file, the documentation clearly 
> states that the first parameter of the function should be a *slug*.
>
> Basically, get_template_part() is a generic version of get_header(), 
> get_footer(), and get_sidebar().  It's meant to work in a similar 
> fashion with the difference being that you can also define the slug.
>
> There is a ticket trying to address the issue of sub-directories and 
> get_template_part() right now:
> http://core.trac.wordpress.org/ticket/15086
>
> Until that ticket has been closed and a resolution decided upon, 
> locate_template() would be the most correct option for including 
> templates within sub-directories.
>
> Now, for the question of including CSS files, neither of the functions 
> should be used.  CSS files must use the URI path, but those functions 
> will use the directory path.  You should always use 
> get_stylesheet_directory_uri() or get_template_directory_uri() 
> (depending on the scenario).
>
> On 4/22/2011 11:37 AM, Chip Bennett wrote:
>> I believe the use of get_template_part() is acceptable for including 
>> files in subdirectories.
>>
>> However, CSS should *always* be enqueued and output via the 
>> wp_print_styles hook, rather than dumped directly into the template.
>>
>> Chip
>>
>> On Fri, Apr 22, 2011 at 11:34 AM, Curtis McHale 
>> <curtis at curtismchale.ca <mailto:curtis at curtismchale.ca>> wrote:
>>
>>     I'm reviewing a theme and I've found uses of get_template_part
>>     where I believe that locate_template is the proper item.
>>     Specifically the code below loads the custom stylesheet.
>>
>>     <?php get_template_part('css/custom-css')?>
>>
>>     It was my understanding that in this case we should use:
>>
>>     <?php locate_template( array( '/css/custom-css.css' ), 1); ?>
>>
>>     and that get_template part was to call a file in the same
>>     directory like loop-main.php. Is there established best practice
>>     and if so what is it? Is the use above an okay way to call a
>>     custom stylesheet in to the theme? If not what way is currently
>>     advised?
>>
>>     Curtis McHale
>>     PH: 604.751.3482
>>     http://www.curtismchale.ca
>>     Linkedin: http://www.linkedin.com/in/curtismchale
>>     Twitter: twitter.com/curtismchale <http://twitter.com/curtismchale>
>>
>>
>>     _______________________________________________
>>     theme-reviewers mailing list
>>     theme-reviewers at lists.wordpress.org
>>     <mailto:theme-reviewers at lists.wordpress.org>
>>     http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>
>>
>>
>> _______________________________________________
>> theme-reviewers mailing list
>> theme-reviewers at lists.wordpress.org
>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>
>
> _______________________________________________
> theme-reviewers mailing list
> theme-reviewers at lists.wordpress.org
> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.wordpress.org/pipermail/theme-reviewers/attachments/20110423/f1ff0785/attachment.htm>


More information about the theme-reviewers mailing list