Buddypress support
<?php
namespace App;
add_action('after_setup_theme', function () {
}, 20);
add_filter( 'body_class', function ( array $classes ) {
if ( function_exists('bp_get_the_body_class') ) {
$bp_classes = array_filter( bp_get_the_body_class() );
if( !empty( $bp_classes) && is_array( $bp_classes) ) {
foreach ( $bp_classes as $bp_class ) {
$prepend = preg_match('/bp|buddypress/i', $bp_class) ? '' : 'bp-';
$classes[] = $prepend . $bp_class . '-data';
}
}
}
return $classes;
}, 100);
add_filter('bp_get_template_locations', function( $locations ) {
return array_merge(
$locations,
[
'views/buddypress',
'views/community',
]
);
});
add_filter( 'bp_get_template_part', function ( $templates, $slug, $name ) {
foreach ( $templates as $key => $template ) {
$theme_template = locate_template( $template );
if ( $theme_template ) {
$data = collect(get_body_class())->reduce(function ($data, $class) {
return apply_filters("sage/template/{$class}/data", $data);
}, []);
echo template($theme_template, $data);
return get_stylesheet_directory() . '/index.php';
}
}
return $templates;
}, PHP_INT_MAX, 3);