[wp-trac] [WordPress Trac] #14310: Template hierarchy filter
WordPress Trac
wp-trac at lists.automattic.com
Wed Jul 14 22:03:58 UTC 2010
#14310: Template hierarchy filter
-------------------------+--------------------------------------------------
Reporter: scribu | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone: 3.1
Component: Themes | Version:
Severity: normal | Keywords: has-patch
-------------------------+--------------------------------------------------
Currently, we have filters for each template type: home_template,
author_template etc.
The trouble is that these filters are applied on the final template path,
after the template hierarchy has been traversed.
It would be useful if there was another filter applied to the actual
template hierarchy array, before it was sent to locate_template().
== Example ==
Take the author template hierarchy:
author-{nicename}.php > author-{id}.php > author.php
Say I want to add author-{role}.php before author.php.
Sure, I could use the 'author_template' filter:
{{{
function author_role_template( $old_template ) {
// get current author's role
$new_template = locate_template( array( "author-$role.php" ) );
if( $new_template && 'author.php' == $old_template )
return $new_template;
return $old_template;
}
add_filter('author_template', 'author_role_template');
}}}
With an 'author_template_candidates' hook, I could manipulate the actual
hierarchy:
{{{
function author_role_template( $templates ) {
// get current author's role
$new_template = array( "author-$role.php" );
$templates = array_merge(
array_slice( $templates, 0, -1 ), // before
$new_template, // inserted
array_slice( $templates, -1 ) // after
);
return $templates;
}
add_filter('author_template_candidates', 'author_role_template');
}}}
This would allow me to remove author-{id}.php if I wanted, etc.
--
Ticket URL: <http://core.trac.wordpress.org/ticket/14310>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list