BP_Component::setup_globals( array $args = array() )
Set up component global variables.
Description
Parameters
- $args
-
(Optional) All values are optional.
- 'slug'
(string) The component slug. Used to construct certain URLs, such as 'friends' in <a href="http://example.com/members/joe/friends/">http://example.com/members/joe/friends/</a>. Default: the value of $this->id. - 'root_slug'
(string) The component root slug. Note that this value is generally unused if the component has a root directory (the slug will be overridden by the post_name of the directory page). Default: the slug of the directory page if one is found, otherwise an empty string. - 'has_directory'
(bool) Set to true if the component requires an associated WordPress page. - 'notification_callback'
(callable) Optional. The callable function that formats the component's notifications. - 'search_term'
(string) Optional. The placeholder text in the component directory search box. Eg, 'Search Groups...'. - 'global_tables'
(array) Optional. An array of database table names. - 'meta_tables'
(array) Optional. An array of metadata table names.
Default value: array()
- 'slug'
Source
File: bp-core/classes/class-bp-component.php
public function setup_globals( $args = array() ) {
/** Slugs ************************************************************
*/
// If a WP directory page exists for the component, it should
// be the default value of 'root_slug'.
$default_root_slug = isset( buddypress()->pages->{$this->id}->slug ) ? buddypress()->pages->{$this->id}->slug : '';
$r = wp_parse_args( $args, array(
'slug' => $this->id,
'root_slug' => $default_root_slug,
'has_directory' => false,
'directory_title' => '',
'notification_callback' => '',
'search_string' => '',
'global_tables' => '',
'meta_tables' => '',
) );
/**
* Filters the slug to be used for the permalink URI chunk after root.
*
* @since BuddyPress 1.5.0
*
* @param string $value Slug to use in permalink URI chunk.
*/
$this->slug = apply_filters( 'bp_' . $this->id . '_slug', $r['slug'] );
/**
* Filters the slug used for root directory.
*
* @since BuddyPress 1.5.0
*
* @param string $value Root directory slug.
*/
$this->root_slug = apply_filters( 'bp_' . $this->id . '_root_slug', $r['root_slug'] );
/**
* Filters the component's top-level directory if available.
*
* @since BuddyPress 1.5.0
*
* @param bool $value Whether or not there is a top-level directory.
*/
$this->has_directory = apply_filters( 'bp_' . $this->id . '_has_directory', $r['has_directory'] );
/**
* Filters the component's directory title.
*
* @since BuddyPress 2.0.0
*
* @param string $value Title to use for the directory.
*/
$this->directory_title = apply_filters( 'bp_' . $this->id . '_directory_title', $r['directory_title'] );
/**
* Filters the placeholder text for search inputs for component.
*
* @since BuddyPress 1.5.0
*
* @param string $value Name to use in search input placeholders.
*/
$this->search_string = apply_filters( 'bp_' . $this->id . '_search_string', $r['search_string'] );
/**
* Filters the callable function that formats the component's notifications.
*
* @since BuddyPress 1.5.0
*
* @param string $value Function callback.
*/
$this->notification_callback = apply_filters( 'bp_' . $this->id . '_notification_callback', $r['notification_callback'] );
// Set the global table names, if applicable.
if ( ! empty( $r['global_tables'] ) ) {
$this->register_global_tables( $r['global_tables'] );
}
// Set the metadata table, if applicable.
if ( ! empty( $r['meta_tables'] ) ) {
$this->register_meta_tables( $r['meta_tables'] );
}
/** BuddyPress *******************************************************
*/
// Register this component in the loaded components array.
buddypress()->loaded_components[$this->slug] = $this->id;
/**
* Fires at the end of the setup_globals method inside BP_Component.
*
* This is a dynamic hook that is based on the component string ID.
*
* @since BuddyPress 1.5.0
*/
do_action( 'bp_' . $this->id . '_setup_globals' );
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.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.