BP_Admin
Load BuddyPress plugin admin area.
Description
Source
File: bp-core/classes/class-bp-admin.php
class BP_Admin {
/** Directory *************************************************************/
/**
* Path to the BuddyPress admin directory.
*
* @since BuddyPress 1.6.0
* @var string $admin_dir
*/
public $admin_dir = '';
/** URLs ******************************************************************/
/**
* URL to the BuddyPress admin directory.
*
* @since BuddyPress 1.6.0
* @var string $admin_url
*/
public $admin_url = '';
/**
* URL to the BuddyPress images directory.
*
* @since BuddyPress 1.6.0
* @var string $images_url
*/
public $images_url = '';
/**
* URL to the BuddyPress admin CSS directory.
*
* @since BuddyPress 1.6.0
* @var string $css_url
*/
public $css_url = '';
/**
* URL to the BuddyPress admin JS directory.
*
* @since BuddyPress 1.6.0
* @var string
*/
public $js_url = '';
/** Other *****************************************************************/
/**
* Notices used for user feedback, like saving settings.
*
* @since BuddyPress 1.9.0
* @var array()
*/
public $notices = array();
/** Methods ***************************************************************/
/**
* The main BuddyPress admin loader.
*
* @since BuddyPress 1.6.0
*
*/
public function __construct() {
$this->setup_globals();
$this->includes();
$this->setup_actions();
}
/**
* Set admin-related globals.
*
* @since BuddyPress 1.6.0
*/
private function setup_globals() {
$bp = buddypress();
// Paths and URLs
$this->admin_dir = trailingslashit( $bp->plugin_dir . 'bp-core/admin' ); // Admin path.
$this->admin_url = trailingslashit( $bp->plugin_url . 'bp-core/admin' ); // Admin url.
$this->images_url = trailingslashit( $this->admin_url . 'images' ); // Admin images URL.
$this->css_url = trailingslashit( $this->admin_url . 'css' ); // Admin css URL.
$this->js_url = trailingslashit( $this->admin_url . 'js' ); // Admin css URL.
// Main settings page.
$this->settings_page = 'buddyboss-platform'; // always use custom menu item, instead of setting page
// Main capability.
$this->capability = bp_core_do_network_admin() ? 'manage_network_options' : 'manage_options';
}
/**
* Include required files.
*
* @since BuddyPress 1.6.0
*/
private function includes() {
require( $this->admin_dir . 'bp-core-admin-actions.php' );
require( $this->admin_dir . 'bp-core-admin-settings.php' );
require( $this->admin_dir . 'bp-core-admin-functions.php' );
require( $this->admin_dir . 'bp-core-admin-components.php' );
require( $this->admin_dir . 'bp-core-admin-pages.php' );
require( $this->admin_dir . 'bp-core-admin-slugs.php' );
require( $this->admin_dir . 'bp-core-admin-tools.php' );
require( $this->admin_dir . 'bp-core-admin-help.php' );
}
/**
* Set up the admin hooks, actions, and filters.
*
* @since BuddyPress 1.6.0
*
*/
private function setup_actions() {
/* General Actions ***************************************************/
// Add some page specific output to the <head>.
add_action( 'bp_admin_head', array( $this, 'admin_head' ), 999 );
// Add menu item to settings menu.
add_action( bp_core_admin_hook(), array( $this, 'site_admin_menus' ), 68 );
add_action( bp_core_admin_hook(), array( $this, 'admin_menus' ), 5 );
//add_action( bp_core_admin_hook(), array( $this, 'admin_menus_components' ), 75 );
add_action( bp_core_admin_hook(), array( $this, 'adjust_buddyboss_menus' ), 100 );
// Enqueue all admin JS and CSS.
add_action( 'bp_admin_enqueue_scripts', array( $this, 'admin_register_styles' ), 1 );
add_action( 'bp_admin_enqueue_scripts', array( $this, 'admin_register_scripts' ), 1 );
add_action( 'bp_admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
/* BuddyPress Actions ************************************************/
// Load the BuddyPress metabox in the WP Nav Menu Admin UI.
add_action( 'load-nav-menus.php', 'bp_admin_wp_nav_menu_meta_box' );
// Add settings.
add_action( 'bp_register_admin_settings', array( $this, 'register_admin_settings' ), 5 );
// Add integrations
add_action( 'bp_register_admin_integrations', array( $this, 'register_admin_integrations' ), 5 );
// Add a description of new BuddyPress tools in the available tools page.
add_action( 'tool_box', 'bp_core_admin_available_tools_intro' );
add_action( 'bp_network_tool_box', 'bp_core_admin_available_tools_intro' );
// On non-multisite, catch.
add_action( 'load-users.php', 'bp_core_admin_user_manage_spammers' );
// Emails.
add_filter( 'manage_' . bp_get_email_post_type() . '_posts_columns', array( $this, 'emails_register_situation_column' ) );
add_action( 'manage_' . bp_get_email_post_type() . '_posts_custom_column', array( $this, 'emails_display_situation_column_data' ), 10, 2 );
// Hello BuddyBoss/AppBoss.
add_action( 'admin_footer', array( $this, 'about_buddyboss_screen' ) );
add_action( 'admin_footer', array( $this, 'about_appboss_screen' ) );
/* Filters ***********************************************************/
// Add link to settings page.
add_filter( 'plugin_action_links', array( $this, 'modify_plugin_action_links' ), 10, 2 );
add_filter( 'network_admin_plugin_action_links', array( $this, 'modify_plugin_action_links' ), 10, 2 );
// Add "Mark as Spam" row actions on users.php.
add_filter( 'ms_user_row_actions', 'bp_core_admin_user_row_actions', 10, 2 );
add_filter( 'user_row_actions', 'bp_core_admin_user_row_actions', 10, 2 );
// Emails
add_filter( 'bp_admin_menu_order', array( $this, 'emails_admin_menu_order' ), 20 );
// Add the separator above the BuddyBoss in admin.
add_filter( 'menu_order', array( $this, 'buddyboss_menu_order' ) );
// Add the separator above the plugins in admin.
add_filter( 'menu_order', array( $this, 'buddyboss_plugins_menu_order' ) );
// DeRegisters jquery-ui-style from the WP Job Manager plugin in WP admin /wp-admin/admin.php?page=bp-profile-setup page.
add_action('admin_enqueue_scripts', array( $this, 'deregister_wp_job_manager_shared_assets' ) , 21 );
}
/**
* DeRegisters jquery-ui-style from the WP Job Manager plugin in WP admin /wp-admin/admin.php?page=bp-profile-setup page.
*
* @since BuddyBoss 1.0.0
*
*/
public function deregister_wp_job_manager_shared_assets() {
global $pagenow, $current_screen;
if ( is_plugin_active( 'wp-job-manager/wp-job-manager.php' ) && isset( $_GET['page'] ) && 'bp-profile-setup' === $_GET['page'] && 'admin.php' === $pagenow && isset( $current_screen->id ) && 'buddyboss_page_bp-profile-setup' === $current_screen->id ) {
wp_dequeue_style('jquery-ui-style');
wp_deregister_style('jquery-ui-style');
}
}
/**
* Add the separator above the BuddyBoss menu in admin.
*
* @param int $menu_order Menu order.
* @return array
*/
public function buddyboss_menu_order( $menu_order ) {
// Initialize our custom order array.
$buddyboss_menu_order = array();
// Get the index of our custom separator.
$buddyboss_separator = array_search( 'separator-buddyboss-platform', $menu_order, true );
// Loop through menu order and do some rearranging.
foreach ( $menu_order as $index => $item ) {
if ( 'buddyboss-platform' === $item ) {
$buddyboss_menu_order[] = 'separator-buddyboss';
$buddyboss_menu_order[] = $item;
unset( $menu_order[ $buddyboss_separator ] );
} elseif ( ! in_array( $item, array( 'separator-buddyboss' ), true ) ) {
$buddyboss_menu_order[] = $item;
}
}
// Return order.
return $buddyboss_menu_order;
}
/**
* Add the separator above the plugins menu in admin.
*
* @param int $menu_order Menu order.
* @return array
*/
public function buddyboss_plugins_menu_order( $menu_order ) {
// Initialize our custom order array.
$plugins_menu_order = array();
// Get the index of our custom separator.
$plugins_separator = array_search( 'separator-plugins.php', $menu_order, true );
// Loop through menu order and do some rearranging.
foreach ( $menu_order as $index => $item ) {
if ( 'plugins.php' === $item ) {
$plugins_menu_order[] = 'separator-plugins';
$plugins_menu_order[] = $item;
unset( $menu_order[ $plugins_separator ] );
} elseif ( ! in_array( $item, array( 'separator-plugins' ), true ) ) {
$plugins_menu_order[] = $item;
}
}
// Return order.
return $plugins_menu_order;
}
/**
* Register main settings menu elements.
*
* @since BuddyBoss 1.0.0
*/
public function admin_menus_components(){
$hooks = array();
$hooks[] = add_submenu_page(
$this->settings_page,
__( '', 'buddyboss' ),
__( '', 'buddyboss' ),
$this->capability,
'bp-plugin-separator-notice',
''
);
// Add the option pages.
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'BuddyBoss Components', 'buddyboss' ),
__( 'Components', 'buddyboss' ),
$this->capability,
'bp-components',
'bp_core_admin_components_settings'
);
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'Pages', 'buddyboss' ),
__( 'Pages', 'buddyboss' ),
$this->capability,
'bp-pages',
'bp_core_admin_pages_settings'
);
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'BuddyBoss Settings', 'buddyboss' ),
__( 'Settings', 'buddyboss' ),
$this->capability,
'bp-settings',
'bp_core_admin_settings'
);
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'Plugin Integrations', 'buddyboss' ),
__( 'Integrations', 'buddyboss' ),
$this->capability,
'bp-integrations',
'bp_core_admin_integrations'
);
// Credits.
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'Credits', 'buddyboss' ),
__( 'Credits', 'buddyboss' ),
$this->capability,
'bp-credits',
array( $this, 'bp_credits_screen' )
);
}
/**
* Register site- or network-admin nav menu elements.
*
* Contextually hooked to site or network-admin depending on current configuration.
*
* @since BuddyPress 1.6.0
*/
public function admin_menus() {
global $menu;
// Bail if user cannot moderate.
if ( ! bp_current_user_can( 'manage_options' ) ) {
return;
}
// Add BuddyBoss Menu separator above the BuddyBoss and below the BuddyBoss
if ( bp_current_user_can( 'manage_options' ) ) {
$menu[] = array( '', 'read', 'separator-buddyboss', '', 'wp-menu-separator buddyboss' ); // WPCS: override ok.
$menu[] = array( '', 'read', 'separator-plugins', '', 'wp-menu-separator plugins' ); // WPCS: override ok.
}
$hooks = array();
// Changed in BP 1.6 . See bp_core_admin_backpat_menu().
$hooks[] = add_menu_page(
__( 'BuddyBoss', 'buddyboss' ),
__( 'BuddyBoss', 'buddyboss' ),
$this->capability,
$this->settings_page,
'bp_core_admin_backpat_menu',
buddypress()->plugin_url . 'bp-core/images/admin/icons/logos/buddyboss.svg',
62
);
$hooks[] = add_submenu_page(
'bp-general-settings',
__( 'BuddyBoss Help', 'buddyboss' ),
__( 'Help', 'buddyboss' ),
$this->capability,
'bp-general-settings',
'bp_core_admin_backpat_page'
);
// Add the Separator.
// $hooks[] = add_submenu_page(
// $this->settings_page,
// __( '', 'buddyboss' ),
// __( '', 'buddyboss' ),
// $this->capability,
// 'bp-plugin-separator-notice',
// ''
// );
// Add the option pages.
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'BuddyBoss Components', 'buddyboss' ),
__( 'Components', 'buddyboss' ),
$this->capability,
'bp-components',
'bp_core_admin_components_settings'
);
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'Pages', 'buddyboss' ),
__( 'Pages', 'buddyboss' ),
$this->capability,
'bp-pages',
'bp_core_admin_pages_settings'
);
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'BuddyBoss Settings', 'buddyboss' ),
__( 'Settings', 'buddyboss' ),
$this->capability,
'bp-settings',
'bp_core_admin_settings'
);
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'Plugin Integrations', 'buddyboss' ),
__( 'Integrations', 'buddyboss' ),
$this->capability,
'bp-integrations',
'bp_core_admin_integrations'
);
// Credits.
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'Credits', 'buddyboss' ),
__( 'Credits', 'buddyboss' ),
$this->capability,
'bp-credits',
array( $this, 'bp_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', 'buddyboss' ),
__( 'Tools', 'buddyboss' ),
$this->capability,
$tools_parent,
'bp_core_tools_top_level_item',
'',
24 // Just above Settings.
);
$hooks[] = add_submenu_page(
$tools_parent,
__( 'Available Tools', 'buddyboss' ),
__( 'Available Tools', 'buddyboss' ),
$this->capability,
'available-tools',
'bp_core_admin_available_tools_page'
);
} else {
$tools_parent = 'tools.php';
}
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'Tools', 'buddyboss' ),
__( 'Tools', 'buddyboss' ),
$this->capability,
'bp-tools',
'bp_core_admin_tools'
);
$hooks[] = add_submenu_page(
$this->settings_page,
__( 'Help', 'buddyboss' ),
__( 'Help', 'buddyboss' ),
$this->capability,
'bp-help',
'bp_core_admin_help'
);
$hooks[] = add_submenu_page(
$this->settings_page,
__( '', 'buddyboss' ),
__( '', 'buddyboss' ),
$this->capability,
'bp-plugin-separator-notice',
''
);
// 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-alt',
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' );
// }
}
/**
* Output the credits screen.
*
* @since BuddyBoss 1.0.0
*
*/
public function bp_credits_screen() {
?>
<div class="wrap">
<h2 class="nav-tab-wrapper"><?php bp_core_admin_tabs( __( 'Credits', 'buddyboss' ) ); ?></h2>
<?php include $this->admin_dir . 'templates/credit-screen.php'; ?>
</div>
<?php
}
public function adjust_buddyboss_menus() {
global $menu, $submenu;
// only if login user has access to menu
if ( ! isset( $submenu[ 'buddyboss-platform' ] ) ) {
return;
}
$submenu[ 'buddyboss-platform' ] = array_values( $submenu[ 'buddyboss-platform' ] );
if ( isset( $app_menu ) ) {
$submenu[ 'buddyboss-platform' ][] = $app_menu;
}
// if there's no buddyboss plugin, don't do anything
if (! array_key_exists('buddyboss-settings', $submenu)) {
return;
}
add_submenu_page( $this->settings_page, '', '', $this->capability, 'bp-plugin-seperator' );
$submenu['buddyboss-platform'] = array_merge(
$submenu['buddyboss-platform'],
$submenu['buddyboss-settings']
);
remove_menu_page( 'buddyboss-settings' );
unset( $submenu['buddyboss-settings'] );
}
/**
* Register site-admin nav menu elements.
*
* @since BuddyPress 2.5.0
*/
public function site_admin_menus() {
if ( ! bp_current_user_can( 'manage_options' ) ) {
return;
}
$hooks = array();
// Appearance > Emails.
$hooks[] = add_theme_page(
__( 'Emails', 'buddyboss' ),
__( 'Emails', 'buddyboss' ),
$this->capability,
'bp-emails-customizer-redirect',
'bp_email_redirect_to_customizer'
);
if ( is_network_admin() && bp_is_network_activated() ) {
$email_url = get_admin_url( bp_get_root_blog_id(), 'edit.php?post_type=' . bp_get_email_post_type() );
} else {
$email_url = 'edit.php?post_type=' . bp_get_email_post_type();
}
$hooks[] = add_submenu_page(
'buddyboss-platform',
__( 'Emails', 'buddyboss' ),
__( 'Emails', 'buddyboss' ),
'bp_moderate',
$email_url,
''
);
foreach( $hooks as $hook ) {
add_action( "admin_head-$hook", 'bp_core_modify_admin_menu_highlight' );
}
}
/**
* Register the settings.
*
* @since BuddyPress 1.6.0
*
*/
public function register_admin_settings() {
$bp = buddypress();
require_once trailingslashit( $bp->plugin_dir . 'bp-core/classes' ) . '/class-bp-admin-tab.php';
require_once trailingslashit( $bp->plugin_dir . 'bp-core/classes' ) . '/class-bp-admin-setting-tab.php';
require_once $this->admin_dir . '/settings/bp-admin-setting-general.php';
require_once $this->admin_dir . '/settings/bp-admin-setting-xprofile.php';
require_once $this->admin_dir . '/settings/bp-admin-setting-activity.php';
require_once $this->admin_dir . '/settings/bp-admin-setting-groups.php';
require_once $this->admin_dir . '/settings/bp-admin-setting-friends.php';
require_once $this->admin_dir . '/settings/bp-admin-setting-messages.php';
require_once $this->admin_dir . '/settings/bp-admin-setting-registration.php';
require_once $this->admin_dir . '/settings/bp-admin-setting-forums.php';
require_once $this->admin_dir . '/settings/bp-admin-setting-search.php';
require_once $this->admin_dir . '/settings/bp-admin-setting-media.php';
require_once $this->admin_dir . '/settings/bp-admin-setting-credit.php';
require_once $this->admin_dir . '/settings/bp-admin-setting-invites.php';
}
/**
* Register the integrations.
*
* @since BuddyPress 1.6.0
*
*/
public function register_admin_integrations() {
$bp = buddypress();
require_once trailingslashit( $bp->plugin_dir . 'bp-core/classes' ) . '/class-bp-admin-tab.php';
require_once trailingslashit( $bp->plugin_dir . 'bp-core/classes' ) . '/class-bp-admin-integration-tab.php';
// integrations should be loaded in its loader file
}
/**
* Add Settings link to plugins area.
*
* @since BuddyPress 1.6.0
* @since BuddyBoss 1.0.0 Updated the Settings path
*
* @param array $links Links array in which we would prepend our link.
* @param string $file Current plugin basename.
* @return array Processed links.
*/
public function modify_plugin_action_links( $links, $file ) {
// Return normal links if not BuddyPress.
if ( plugin_basename( buddypress()->basename ) != $file ) {
return $links;
}
// Add a few links to the existing links array.
return array_merge( $links, array(
'settings' => '<a href="' . esc_url( bp_get_admin_url( 'admin.php?page=bp-settings' ) ) . '">' . __( 'Settings', 'buddyboss' ) . '</a>',
'about' => '<a href="' . esc_url( bp_get_admin_url( '?hello=buddyboss' ) ) . '">' . __( 'About', 'buddyboss' ) . '</a>'
) );
}
/**
* Add some general styling to the admin area.
*
* @since BuddyPress 1.6.0
*/
public function admin_head() {
// Settings pages.
remove_submenu_page( $this->settings_page, $this->settings_page );
// Network Admin Tools.
remove_submenu_page( 'network-tools', 'network-tools' );
// Credits page.
remove_submenu_page( 'index.php', 'bp-credits' );
}
/**
* Add some general styling to the admin area.
*
* @since BuddyPress 1.6.0
* @since BuddyBoss 1.0.0 Added support for Hello AppBoss
*/
public function enqueue_scripts() {
wp_enqueue_style( 'bp-admin-common-css' );
// Hello BuddyBoss
if ( 0 === strpos( get_current_screen()->id, 'dashboard' ) && ! empty( $_GET['hello'] ) && $_GET['hello'] === 'buddyboss' ) {
wp_enqueue_style( 'bp-hello-css' );
wp_enqueue_script( 'bp-hello-js' );
}
// Hello AppBoss
if ( 0 === strpos( get_current_screen()->id, 'dashboard' ) && ! empty( $_GET['hello'] ) && $_GET['hello'] === 'appboss' ) {
wp_enqueue_style( 'bp-hello-css' );
wp_enqueue_script( 'bp-hello-js' );
}
wp_enqueue_script( 'bp-fitvids-js' );
}
/** About BuddyBoss and AppBoss ********************************************/
/**
* Output the Hello BuddyBoss template.
*
* @since BuddyPress 1.7.0 Screen content.
* @since BuddyBoss 1.0.0 Now outputs Hello BuddyBoss template.
*/
public function about_buddyboss_screen() {
if ( 0 !== strpos( get_current_screen()->id, 'dashboard' ) || empty( $_GET['hello'] ) || $_GET['hello'] !== 'buddyboss' ) {
return;
}
include $this->admin_dir . 'templates/about-buddyboss.php';
}
/**
* Output the Hello AppBoss template.
*
* @since BuddyBoss 1.0.0 Output the Hello AppBoss template.
*/
public function about_appboss_screen() {
if ( 0 !== strpos( get_current_screen()->id, 'dashboard' ) || empty( $_GET['hello'] ) || $_GET['hello'] !== 'appboss' ) {
return;
}
include $this->admin_dir . 'templates/about-appboss.php';
}
/** Emails ****************************************************************/
/**
* Registers 'Situations' column on Emails dashboard page.
*
* @since BuddyPress 2.6.0
*
* @param array $columns Current column data.
* @return array
*/
public function emails_register_situation_column( $columns = array() ) {
$situation = array(
'situation' => __( 'Situations', 'buddyboss' )
);
// Inject our 'Situations' column just before the last 'Date' column.
return array_slice( $columns, 0, -1, true ) + $situation + array_slice( $columns, -1, null, true );
}
/**
* Output column data for our custom 'Situations' column.
*
* @since BuddyPress 2.6.0
*
* @param string $column Current column name.
* @param int $post_id Current post ID.
*/
public function emails_display_situation_column_data( $column = '', $post_id = 0 ) {
if ( 'situation' !== $column ) {
return;
}
// Grab email situations for the current post.
$situations = wp_list_pluck( get_the_terms( $post_id, bp_get_email_tax_type() ), 'description' );
// Output each situation as a list item.
echo '<ul><li>';
echo implode( '</li><li>', $situations );
echo '</li></ul>';
}
/** Helpers ***************************************************************/
/**
* Return true/false based on whether a query argument is set.
*
* @see bp_do_activation_redirect()
*
* @since BuddyPress 2.2.0
*
* @return bool
*/
public static function is_new_install() {
return (bool) isset( $_GET['is_new_install'] );
}
/**
* Return a user-friendly version-number string, for use in translations.
*
* @since BuddyPress 2.2.0
*
* @return string
*/
public static function display_version() {
// Use static variable to prevent recalculations.
static $display = '';
// Only calculate on first run.
if ( '' === $display ) {
// Get current version.
$version = bp_get_version();
// Check for prerelease hyphen.
$pre = strpos( $version, '-' );
// Strip prerelease suffix.
$display = ( false !== $pre )
? substr( $version, 0, $pre )
: $version;
}
// Done!
return $display;
}
/**
* Add Emails menu item to custom menus array.
*
* Several BuddyPress components have top-level menu items in the Dashboard,
* which all appear together in the middle of the Dashboard menu. This function
* adds the Emails screen to the array of these menu items.
*
* @since BuddyPress 2.4.0
*
* @param array $custom_menus The list of top-level BP menu items.
* @return array $custom_menus List of top-level BP menu items, with Emails added.
*/
public function emails_admin_menu_order( $custom_menus = array() ) {
array_push( $custom_menus, 'edit.php?post_type=' . bp_get_email_post_type() );
if ( is_network_admin() && bp_is_network_activated() ) {
array_push(
$custom_menus,
get_admin_url( bp_get_root_blog_id(), 'edit.php?post_type=' . bp_get_email_post_type() )
);
}
return $custom_menus;
}
/**
* Register styles commonly used by BuddyPress wp-admin screens.
*
* @since BuddyPress 2.5.0
*/
public function admin_register_styles() {
$min = bp_core_get_minified_asset_suffix();
$url = $this->css_url;
/**
* Filters the BuddyBoss Core Admin CSS file path.
*
* @since BuddyPress 1.6.0
*
* @param string $file File path for the admin CSS.
*/
$common_css = apply_filters( 'bp_core_admin_common_css', "{$url}common{$min}.css" );
/**
* Filters the BuddyPress admin stylesheet files to register.
*
* @since BuddyPress 2.5.0
*
* @param array $value Array of admin stylesheet file information to register.
*/
$styles = apply_filters( 'bp_core_admin_register_styles', array(
// Legacy.
'bp-admin-common-css' => array(
'file' => $common_css,
'dependencies' => array(),
),
// 2.5
'bp-customizer-controls' => array(
'file' => "{$url}customizer-controls{$min}.css",
'dependencies' => array(),
),
// 3.0
'bp-hello-css' => array(
'file' => "{$url}hello{$min}.css",
'dependencies' => array( 'bp-admin-common-css' ),
),
) );
$version = bp_get_version();
foreach ( $styles as $id => $style ) {
wp_register_style( $id, $style['file'], $style['dependencies'], $version );
wp_style_add_data( $id, 'rtl', true );
if ( $min ) {
wp_style_add_data( $id, 'suffix', $min );
}
}
}
/**
* Register JS commonly used by BuddyPress wp-admin screens.
*
* @since BuddyPress 2.5.0
*/
public function admin_register_scripts() {
$min = bp_core_get_minified_asset_suffix();
$url = $this->js_url;
/**
* Filters the BuddyPress admin JS files to register.
*
* @since BuddyPress 2.5.0
*
* @param array $value Array of admin JS file information to register.
*/
$scripts = apply_filters( 'bp_core_admin_register_scripts', array(
// 2.5
'bp-customizer-controls' => array(
'file' => "{$url}customizer-controls{$min}.js",
'dependencies' => array( 'jquery' ),
'footer' => true,
),
// 3.0
'bp-hello-js' => array(
'file' => "{$url}hello{$min}.js",
'dependencies' => array(),
'footer' => true,
),
// 1.1
'bp-fitvids-js' => array(
'file' => "{$url}fitvids{$min}.js",
'dependencies' => array(),
'footer' => true,
),
) );
$version = bp_get_version();
foreach ( $scripts as $id => $script ) {
wp_register_script( $id, $script['file'], $script['dependencies'], $version, $script['footer'] );
}
}
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.6.0 | Introduced. |
Methods
- __construct — The main BuddyPress admin loader.
- about_appboss_screen — Output the Hello AppBoss template.
- about_buddyboss_app_screen — Output the Hello BuddyBoss App template.
- about_buddyboss_screen — Output the Hello BuddyBoss template.
- adjust_buddyboss_menus
- admin_head — Add some general styling to the admin area.
- admin_menus — Register site- or network-admin nav menu elements.
- admin_menus_components — Register main settings menu elements.
- admin_register_scripts — Register JS commonly used by BuddyPress wp-admin screens.
- admin_register_styles — Register styles commonly used by BuddyPress wp-admin screens.
- bp_add_main_menu_page_admin_menu — Register network-admin nav menu elements.
- bp_credits_screen — Output the credits screen.
- bp_emails_add_sub_menu_page_admin_menu
- buddyboss_menu_order — Add the separator above the BuddyBoss menu in admin.
- buddyboss_plugins_menu_order — Add the separator above the plugins menu in admin.
- deregister_wp_job_manager_shared_assets — DeRegisters jquery-ui-style from the WP Job Manager plugin in WP admin /wp-admin/admin.php?page=bp-profile-setup page.
- display_version — Return a user-friendly version-number string, for use in translations.
- document_extension_mime_type_check_screen
- emails_admin_menu_order — Add Emails menu item to custom menus array.
- emails_display_situation_column_data — Output column data for our custom 'Situations' column.
- emails_register_situation_column — Registers 'Situations' column on Emails dashboard page.
- enqueue_scripts — Add some general styling to the admin area.
- includes — Include required files.
- is_new_install — Return true/false based on whether a query argument is set.
- modify_plugin_action_links — Add Settings link to plugins area.
- register_admin_integrations — Register the integrations.
- register_admin_settings — Register the settings.
- setup_actions — Set up the admin hooks, actions, and filters.
- setup_globals — Set admin-related globals.
- site_admin_menus — Register site-admin nav menu elements.
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.