/** * Retrieve the name of the highest priority template file that exists. * * 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. * * @since bbPres (r3618) * * @param string|array $template_names Template file(s) to search for, in order. * @param bool $load If true the template file will be loaded if it is found. * @param bool $require_once Whether to require_once or require. Default true. * Has no effect if $load is false. * @return string The template filename if one is located. */ function bbp_locate_template($template_names, $load = false, $require_once = true) { // No file found yet $located = false; // 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, '/'); // Check child theme first if (file_exists(trailingslashit(STYLESHEETPATH) . $template_name)) { $located = trailingslashit(STYLESHEETPATH) . $template_name; break; // Check parent theme next } elseif (file_exists(trailingslashit(TEMPLATEPATH) . $template_name)) { $located = trailingslashit(TEMPLATEPATH) . $template_name; break; // Check theme compatibility last } elseif (file_exists(trailingslashit(bbp_get_theme_compat_dir()) . $template_name)) { $located = trailingslashit(bbp_get_theme_compat_dir()) . $template_name; break; } } if (true == $load && !empty($located)) { load_template($located, $require_once); } return $located; }
static function add_template_locations($locations) { $stylesheet_dir = get_stylesheet_directory(); $template_dir = get_template_directory(); $compat_dir = untrailingslashit(bbp_get_theme_compat_dir()); foreach ($locations as $k => $location) { // append 'kr' to all locations if (strpos($location, $compat_dir) === 0 || strpos($location, BBPKR_PATH) === 0) { // var_dump($location); continue; } if ($location == $template_dir || $location == $stylesheet_dir) { // unset( $locations[$k] ); continue; } $locations[$k] .= 'kr'; } return $locations; }