BP_Admin::admin_menus()
Register site- or network-admin nav menu elements.
Description Description
Contextually hooked to site or network-admin depending on current configuration.
Source Source
File: bp-core/classes/class-bp-admin.php
public function admin_menus() {
// Bail if user cannot moderate.
if ( ! bp_current_user_can( 'manage_options' ) ) {
return;
}
$hooks = array();
// Changed in BP 1.6 . See bp_core_admin_backpat_menu().
$hooks[] = add_menu_page(
__( 'BuddyPress', 'buddypress' ),
__( 'BuddyPress', 'buddypress' ),
$this->capability,
'bp-general-settings',
'bp_core_admin_backpat_menu',
'div'
);
$hooks[] = add_submenu_page(
'bp-general-settings',
__( 'BuddyPress Help', 'buddypress' ),
__( 'Help', 'buddypress' ),
$this->capability,
'bp-general-settings',
'bp_core_admin_backpat_page'
);
// Add the option pages.
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'BuddyPress Components', 'buddypress' ),
__( 'BuddyPress', 'buddypress' ),
$this->capability,
'bp-components',
'bp_core_admin_components_settings'
);
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'BuddyPress Pages', 'buddypress' ),
__( 'BuddyPress Pages', 'buddypress' ),
$this->capability,
'bp-page-settings',
'bp_core_admin_slugs_settings'
);
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'BuddyPress Options', 'buddypress' ),
__( 'BuddyPress Options', 'buddypress' ),
$this->capability,
'bp-settings',
'bp_core_admin_settings'
);
// Credits.
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'BuddyPress Credits', 'buddypress' ),
__( 'BuddyPress Credits', 'buddypress' ),
$this->capability,
'bp-credits',
array( $this, 'credits_screen' )
);
// For consistency with non-Multisite, we add a Tools menu in
// the Network Admin as a home for our Tools panel.
if ( is_multisite() && bp_core_do_network_admin() ) {
$tools_parent = 'network-tools';
$hooks[] = add_menu_page(
__( 'Tools', 'buddypress' ),
__( 'Tools', 'buddypress' ),
$this->capability,
$tools_parent,
'bp_core_tools_top_level_item',
'',
24 // Just above Settings.
);
$hooks[] = add_submenu_page(
$tools_parent,
__( 'Available Tools', 'buddypress' ),
__( 'Available Tools', 'buddypress' ),
$this->capability,
'available-tools',
'bp_core_admin_available_tools_page'
);
} else {
$tools_parent = 'tools.php';
}
$hooks[] = add_submenu_page(
$tools_parent,
__( 'BuddyPress Tools', 'buddypress' ),
__( 'BuddyPress', 'buddypress' ),
$this->capability,
'bp-tools',
'bp_core_admin_tools'
);
// For network-wide configs, add a link to (the root site's) Emails screen.
if ( is_network_admin() && bp_is_network_activated() ) {
$email_labels = bp_get_email_post_type_labels();
$email_url = get_admin_url( bp_get_root_blog_id(), 'edit.php?post_type=' . bp_get_email_post_type() );
$hooks[] = add_menu_page(
$email_labels['name'],
$email_labels['menu_name'],
$this->capability,
'',
'',
'dashicons-email',
26
);
// Hack: change the link to point to the root site's admin, not the network admin.
$GLOBALS['menu'][26][2] = esc_url_raw( $email_url );
}
foreach( $hooks as $hook ) {
add_action( "admin_head-$hook", 'bp_core_modify_admin_menu_highlight' );
}
}
Changelog Changelog
| Version | Description |
|---|---|
| 1.6.0 | Introduced. |