BuddyPress::autoload( string $class )
Autoload classes.
Description
Parameters
- $class
-
(Required)
Source
File: class-buddypress.php
public function autoload( $class ) {
$class_parts = explode( '_', strtolower( $class ) );
if ( 'bp' !== $class_parts[0] ) {
return;
}
$components = array(
'activity',
'blogs',
'core',
'friends',
'groups',
'members',
'messages',
'notifications',
'settings',
'xprofile',
'profiletype',
'forums',
'search',
'media',
'gdpr',
'invites',
);
// These classes don't have a name that matches their component.
$irregular_map = array(
'BP_Akismet' => 'activity',
'BP_Admin' => 'core',
'BP_Attachment_Avatar' => 'core',
'BP_Attachment_Cover_Image' => 'core',
'BP_Attachment' => 'core',
'BP_Button' => 'core',
'BP_Component' => 'core',
'BP_Integration' => 'core',
'BP_Customizer_Control_Range' => 'core',
'BP_Date_Query' => 'core',
'BP_Email_Tokens' => 'core',
'BP_Email_Delivery' => 'core',
'BP_Email_Recipient' => 'core',
'BP_Email' => 'core',
'BP_Embed' => 'core',
'BP_Media_Extractor' => 'core',
'BP_Members_Suggestions' => 'core',
'BP_PHPMailer' => 'core',
'BP_Recursive_Query' => 'core',
'BP_Suggestions' => 'core',
'BP_Theme_Compat' => 'core',
'BP_User_Query' => 'core',
'BP_Walker_Category_Checklist' => 'core',
'BP_Walker_Nav_Menu_Checklist' => 'core',
'BP_Walker_Nav_Menu' => 'core',
'BP_Core_Gdpr' => 'gdpr',
'BP_Activity_Export' => 'gdpr',
'BP_Export' => 'gdpr',
'BP_Friendship_Export' => 'gdpr',
'BP_Group_Export' => 'gdpr',
'BP_Group_Membership_Export' => 'gdpr',
'BP_Message_Export' => 'gdpr',
'BP_Notification_Export' => 'gdpr',
'BP_Settings_Export' => 'gdpr',
'BP_Xprofile_Export' => 'gdpr',
'BP_Bbp_Gdpr_Forums' => 'gdpr',
'BP_Bbp_Gdpr_Replies' => 'gdpr',
'BP_Bbp_Gdpr_Topics' => 'gdpr',
'BP_Core_Friends_Widget' => 'friends',
'BP_Core_Network_Posts_Widget' => 'core',
'BP_Core_Follow_Following_Widget'=> 'core',
'BP_Group_Extension' => 'groups',
'BP_Group_Member_Query' => 'groups',
'BP_Core_Members_Template' => 'members',
'BP_Core_Members_Widget' => 'members',
'BP_Core_Recently_Active_Widget' => 'members',
'BP_Core_Whos_Online_Widget' => 'members',
'BP_Registration_Theme_Compat' => 'members',
'BP_Signup' => 'members',
'BP_BuddyBoss_Platform_Updater' => 'core',
);
$component = null;
// First check to see if the class is one without a properly namespaced name.
if ( isset( $irregular_map[ $class ] ) ) {
$component = $irregular_map[ $class ];
// Next chunk is usually the component name.
} elseif ( in_array( $class_parts[1], $components, true ) ) {
$component = $class_parts[1];
}
if ( ! $component ) {
return;
}
// Sanitize class name.
$class = strtolower( str_replace( '_', '-', $class ) );
if ( 'gdpr' === $component ) {
$path = dirname( __FILE__ ) . "/bp-core/gdpr/class-{$class}.php";
} else {
$path = dirname( __FILE__ ) . "/bp-{$component}/classes/class-{$class}.php";
}
// Sanity check.
if ( ! file_exists( $path ) ) {
return;
}
/*
* Sanity check 2 - Check if component is active before loading class.
* Skip if PHPUnit is running, or BuddyPress is installing for the first time.
*/
if (
! in_array( $component, array( 'core', 'members', 'xprofile', 'gdpr', 'profiletype' ), true ) &&
! bp_is_active( $component ) &&
! function_exists( 'tests_add_filter' )
) {
return;
}
require $path;
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 2.5.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.