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
-
(array) (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.