[buddypress-trac] [BuddyPress] #4755: Address usage of bp_locate_template()
buddypress-trac
noreply at wordpress.org
Wed Jan 16 19:50:02 UTC 2013
#4755: Address usage of bp_locate_template()
--------------------------+------------------
Reporter: r-a-y | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: 1.7
Component: Core | Version: 1.7
Severity: normal | Resolution:
Keywords: dev-feedback |
--------------------------+------------------
Description changed by r-a-y:
Old description:
> If you use `bp_locate_template()` by itself, it will not see the custom
> directory locations (like 'buddypress' and 'community' as set in
> `bp_get_template_locations()`) because only `bp_get_template_part()` has
> a filter that is hooked in by `bp_add_template_locations()`.
>
> This is a problem in the current codebase as
> `bp_has_custom_signup_page()` and `bp_has_custom_activation_page()` both
> use `bp_locate_template()`.
>
> This leads to issues with the "Register" links in both single and
> multisite as BP does not hijack them as in previous BP releases.
>
> ----
>
> I listed a potential solution in the second patch of #4656.
>
> If that approach is not acceptable, then I believe we'll need a method
> that makes sure both `bp_get_template_part()` and `bp_locate_template()`
> references the same templates at all times.
>
> Let me know if I'm not being clear.
New description:
Let's try this again.
'''One-line summary:'''
`bp_locate_template()` does not mirror the same set of templates as
`bp_get_template_part()`.
'''Side-effects:'''
Currently, `bp_locate_template()` does not check a theme's custom
subdirectories ('buddypress', 'community' ) for templates.
This is a problem when theme compat is on as bp-legacy's templates are
located in the 'buddypress' subdirectory.
The main issue is `bp_locate_template()` is used in these two functions:
* bp_has_custom_signup_page()
* bp_has_custom_activation_page()
Since bp_locate_template() is used in these functions, when theme compat
is on, this leads to the registration / activation templates not being
properly detected and hence the registration hijack that BP usually does
fails.
'''Why do bp_locate_template() and bp_get_template_part() reference
different templates?'''
It's due to this:
{{{
add_filter( 'bp_locate_template', 'bp_add_template_locations' );
add_filter( 'bp_get_template_part', 'bp_add_template_locations' );
}}}
The 'bp_locate_template' filter does not exist and was removed in r6537.
This leads to the registration / activation templates are not detected
properly when theme compat is on.
'''Conclusion'''
We need a solution so both bp_locate_template() and bp_get_template_part()
references the same templates at all times.
Some potential methods include:
1. Adding back the `'bp_locate_template'` filter that was removed in
r6537.
2. Adding the custom subdirectory locations at the template stack level.
Attached patch is an attempt at this.
--
--
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/4755#comment:3>
BuddyPress <http://buddypress.org/>
BuddyPress
More information about the buddypress-trac
mailing list