BP_Nouveau::theme_compat_page_templates( array $templates = array() )
Filter the default theme compatibility root template hierarchy, and prepend a page template to the front if it’s set.
Description
See also
Parameters
- $templates
-
(Optional) Array of templates.
Default value: array()
Return
(array)
Source
File: bp-templates/bp-nouveau/buddypress-functions.php
public function theme_compat_page_templates( $templates = array() ) {
/**
* Filters whether or not we are looking at a directory to determine if to return early.
*
* @since BuddyPress 3.0.0
*
* @param bool $value Whether or not we are viewing a directory.
*/
if ( true === (bool) apply_filters( 'bp_nouveau_theme_compat_page_templates_directory_only', ! bp_is_directory() ) ) {
return $templates;
}
// No page ID yet.
$page_id = 0;
// Get the WordPress Page ID for the current view.
foreach ( (array) buddypress()->pages as $component => $bp_page ) {
// Handles the majority of components.
if ( bp_is_current_component( $component ) ) {
$page_id = (int) $bp_page->id;
}
// Stop if not on a user page.
if ( ! bp_is_user() && ! empty( $page_id ) ) {
break;
}
// The Members component requires an explicit check due to overlapping components.
if ( bp_is_user() && ( 'members' === $component ) ) {
$page_id = (int) $bp_page->id;
break;
}
}
// Bail if no directory page set.
if ( 0 === $page_id ) {
return $templates;
}
// Check for page template.
$page_template = get_page_template_slug( $page_id );
// Add it to the beginning of the templates array so it takes precedence over the default hierarchy.
if ( ! empty( $page_template ) ) {
/**
* Check for existence of template before adding it to template
* stack to avoid accidentally including an unintended file.
*
* @see https://buddypress.trac.wordpress.org/ticket/6190
*/
if ( '' !== locate_template( $page_template ) ) {
array_unshift( $templates, $page_template );
}
}
return $templates;
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 3.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.