bp_core_new_subnav_item( array|string $args, string|null $component = null )
Add an item to secondary navigation of the specified component.
Description
Parameters
- $args
-
(Required) Array describing the new subnav item.
- 'name'
(string) Display name for the subnav item. - 'slug'
(string) Unique URL slug for the subnav item. - 'parent_slug'
(string) Slug of the top-level nav item under which the new subnav item should be added. - 'parent_url'
(string) URL of the parent nav item. - 'item_css_id'
(bool|string) Optional. 'id' attribute for the nav item. Default: the value of$slug. - 'user_has_access'
(bool) Optional. True if the logged-in user has access to the subnav item, otherwise false. Can be set dynamically when registering the subnav; eg, usebp_is_my_profile()to restrict access to profile owners only. Default: true. - 'site_admin_only'
(bool) Optional. Whether the nav item should be visible only to site admins (those with the 'bp_moderate' cap). Default: false. - 'position'
(int) Optional. Numerical index specifying where the item should appear in the subnav array. Default: 90. - 'screen_function'
(callable) The callback function that will run when the nav item is clicked. - 'link'
(string) Optional. The URL that the subnav item should point to. Defaults to a value generated from the$parent_url+$slug. - 'show_in_admin_bar'
(bool) Optional. Whether the nav item should be added into the group's "Edit" Admin Bar menu for group admins. Default: false.
- 'name'
- $component
-
(Optional) The component the navigation is attached to. Defaults to 'members'.
Default value: null
Return
(null|false) Returns false on failure.
Source
File: bp-core/bp-core-buddybar.php
function bp_core_new_subnav_item( $args, $component = null ) {
// Backward compatibility for plugins using `bp_core_new_subnav_item()` without `$component`
// to add group subnav items.
if ( null === $component && bp_is_active( 'groups' ) && bp_is_group() && isset( $args['parent_slug'] ) ) {
/*
* Assume that this item is intended to belong to the current group if:
* a) the 'parent_slug' is the same as the slug of the current group, or
* b) the 'parent_slug' starts with the slug of the current group, and the members nav doesn't have
* a primary item with that slug.
*/
$group_slug = bp_get_current_group_slug();
if (
$group_slug === $args['parent_slug'] ||
( 0 === strpos( $args['parent_slug'], $group_slug ) && ! buddypress()->members->nav->get_primary( array( 'slug' => $args['parent_slug'] ), false ) )
) {
$component = 'groups';
}
}
if ( ! $component ) {
$component = 'members';
}
if ( ! bp_is_active( $component ) ) {
return;
}
// First, register the subnav item in the nav.
$subnav_item = bp_core_create_subnav_link( $args, $component );
/*
* To mimic legacy behavior, if bp_core_create_subnav_link() returns false, we make an
* early exit and don't attempt to register the screen function.
*/
if ( false === $subnav_item ) {
return false;
}
// Then, hook the screen function for the added subnav item.
$hooked = bp_core_register_subnav_screen_function( $subnav_item, $component );
if ( false === $hooked ) {
return false;
}
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.1.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.