bp_locate_template( string|array $template_names, bool $load = false, bool $require_once = true )
Retrieve the name of the highest priority template file that exists.
Description
Searches in the STYLESHEETPATH before TEMPLATEPATH so that themes which inherit from a parent theme can just overload one file. If the template is not found in either of those, it looks in the theme-compat folder last.
Parameters
- $template_names
-
(Required) Template file(s) to search for, in order.
- $load
-
(Optional) If true, the template file will be loaded when found. If false, the path will be returned. Default: false.
Default value: false
- $require_once
-
(Optional) Whether to require_once or require. Has no effect if $load is false. Default: true.
Default value: true
Return
(string) The template filename if one is located.
Source
File: bp-core/bp-core-template-loader.php
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | function bp_locate_template( $template_names , $load = false, $require_once = true ) { // Bail when there are no templates to locate if ( empty ( $template_names ) ) { return false; } // No file found yet. $located = false; $template_locations = bp_get_template_stack(); // Try to find a template file. foreach ( ( array ) $template_names as $template_name ) { // Continue if template is empty. if ( empty ( $template_name ) ) { continue ; } // Trim off any slashes from the template name. $template_name = ltrim( $template_name , '/' ); // Loop through template stack. foreach ( ( array ) $template_locations as $template_location ) { // Continue if $template_location is empty. if ( empty ( $template_location ) ) { continue ; } // Check child theme first. if ( file_exists ( trailingslashit( $template_location ) . $template_name ) ) { $located = trailingslashit( $template_location ) . $template_name ; break 2; } } } /** * This action exists only to follow the standard BuddyPress coding convention, * and should not be used to short-circuit any part of the template locator. * * If you want to override a specific template part, please either filter * 'bp_get_template_part' or add a new location to the template stack. */ do_action( 'bp_locate_template' , $located , $template_name , $template_names , $template_locations , $load , $require_once ); /** * Filter here to allow/disallow template loading. * * @since BuddyPress 2.5.0 * * @param bool $value True to load the template, false otherwise. */ $load_template = (bool) apply_filters( 'bp_locate_template_and_load' , true ); if ( $load_template && $load && ! empty ( $located ) ) { load_template( $located , $require_once ); } return $located ; } |
Changelog
Version | Description |
---|---|
BuddyPress 1.7.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.