[buddypress-trac] [BuddyPress] #4639: Add template hierarchy support
noreply at wordpress.org
Fri Nov 9 20:59:42 UTC 2012
#4639: Add template hierarchy support
Reporter: DJPaul | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone: 1.7
Component: Theme | Version:
Severity: normal | Resolution:
Keywords: commit |
Comment (by r-a-y):
The settings templates are actually named that way because of a bug. See
I'm opposed to adding hierarchy for these when devs can use the more,
`/members/single/home-settings.php` (when on the settings component and
when the patch is committed)
Chances are you'll want to style all the settings pages with the same
'''Paul:''' With what we talked about last week, I spent some time testing
everything again (except group extensions).
I'm going to outline the problem
[https://buddypress.trac.wordpress.org/ticket/4639#comment:33 noted by
== Problem ==
I like theme compat, but want to override a template loaded
Let's say I like theme compat and want to continue using theme compat, but
want to merely add or change the markup to a template loaded by
`bp_core_load_template()` (such as `/members/single/home.php`).
'''A)''' If I move `/members/single/home.php` from bp-legacy over to my
current theme (`wp-content/themes/twentytwelve/members/single/home.php`),
`bp_core_load_template()` is loading this template before theme compat is
Therefore, I won't see get_header(), get_sidebar(), etc, because bp-
legacy's home.php is just a template part. It won't load the skeleton
template from page.php (or any of the templates from
The problem is we're referring to home.php in two different use-cases.
Both as a regular page template and a template part.
'''B)''' If I move `/members/single/home.php` to my theme's subdirectory
like `/buddypress/members/single/home.php` or
`/community/members/single/home.php`, this works as expected.
It's quite confusing and we're the implementors!
== Proposed solution ==
For template hierarchy, we should use `index.php` (or page.php, etc.) as
our marker instead of `home.php`.
Then, the hierarchy would look like this:
$templates = array(
'members/single/index-' . $user_nicename . '.php',
'members/single/index-' . $user_id . '.php',
'members/single/index-' . $component . '.php',
This solves all problems with home.php disambiguation.
As a reference point, we've already renamed templates in theme compat
before; the registration templates in theme compat were renamed from
`/registration/register.php` to `/members/register.php`.
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/4639#comment:35>
More information about the buddypress-trac