BP_Core_Nav::delete_nav( string $slug = '', string $parent_slug = '' )
Unset an item or a subitem of the nav.
Description
Parameters
- $slug
-
(Optional) The slug of the main item.
Default value: ''
- $parent_slug
-
(Optional) The slug of the sub item.
Default value: ''
Return
(false|callable|array) False on failure, the screen function(s) on success.
Source
File: bp-core/classes/class-bp-core-nav.php
public function delete_nav( $slug = '', $parent_slug = '' ) {
// Bail if slug is empty
if ( empty( $slug ) ) {
return false;
}
// We're deleting a child
if ( ! empty( $parent_slug ) ) {
// Validate the subnav
$sub_items = $this->get_secondary( array( 'parent_slug' => $parent_slug, 'slug' => $slug ), false );
if ( ! $sub_items ) {
return false;
}
$sub_item = reset( $sub_items );
if ( empty( $sub_item->slug ) ) {
return false;
}
// Delete the child
unset( $this->nav[ $this->object_id ][ $parent_slug . '/' . $slug ] );
// Return the deleted item's screen function
return array( $sub_item->screen_function );
// We're deleting a parent
} else {
// Validate the nav
$nav_items = $this->get_primary( array( 'slug' => $slug ), false );
if ( ! $nav_items ) {
return false;
}
$nav_item = reset( $nav_items );
if ( empty( $nav_item->slug ) ) {
return false;
}
$screen_functions = array( $nav_item->screen_function );
// Life's unfair, children won't survive the parent :(
$sub_items = $this->get_secondary( array( 'parent_slug' => $nav_item->slug ), false );
if ( ! empty( $sub_items ) ) {
foreach ( $sub_items as $sub_item ) {
$screen_functions[] = $sub_item->screen_function;
// Delete the child
unset( $this->nav[ $this->object_id ][ $nav_item->slug . '/' . $sub_item->slug ] );
}
}
// Delete the parent.
unset( $this->nav[ $this->object_id ][ $nav_item->slug ] );
// Return the deleted item's screen functions.
return $screen_functions;
}
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 2.6.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.