bp_nouveau_has_nav( array $args = array() )
Init the Navigation Loop and check it has items.
Description
Parameters
- $args
-
(Optional) Array of arguments.
- 'type'
(string) The type of Nav to get (primary or secondary) Default 'primary'. Required. - 'object'
(string) The object to get the nav for (eg: 'directory', 'group_manage', or any custom object). Default ''. Optional - 'user_has_access'
(bool) Used by the secondary member's & group's nav. Default true. Optional. - 'show_for_displayed_user'
(bool) Used by the primary member's nav. Default true. Optional.
Default value: array()
- 'type'
Return
(bool) True if the Nav contains items. False otherwise.
Source
File: bp-templates/bp-nouveau/includes/template-tags.php
function bp_nouveau_has_nav( $args = array() ) {
$bp_nouveau = bp_nouveau();
$n = wp_parse_args( $args, array(
'type' => 'primary',
'object' => '',
'user_has_access' => true,
'show_for_displayed_user' => true,
) );
if ( empty( $n['type'] ) ) {
return false;
}
$nav = array();
$bp_nouveau->displayed_nav = '';
$bp_nouveau->object_nav = $n['object'];
if ( bp_is_directory() || 'directory' === $bp_nouveau->object_nav ) {
$bp_nouveau->displayed_nav = 'directory';
$nav = $bp_nouveau->directory_nav->get_primary();
// So far it's only possible to build a Group nav when displaying it.
} elseif ( bp_is_group() ) {
$bp_nouveau->displayed_nav = 'groups';
$parent_slug = bp_get_current_group_slug();
$group_nav = buddypress()->groups->nav;
if ( 'group_manage' === $bp_nouveau->object_nav && bp_is_group_admin_page() ) {
$parent_slug .= '_manage';
} else if ( 'group_media' === $bp_nouveau->object_nav && bp_is_group_media() ) {
$parent_slug .= '_media';
} else if ( 'group_members' === $bp_nouveau->object_nav && bp_is_group_members() ) {
$parent_slug .= '_members';
/**
* If it's not the Admin tabs, reorder the Group's nav according to the
* customizer setting.
*/
} else {
bp_nouveau_set_nav_item_order( $group_nav, bp_nouveau_get_appearance_settings( 'group_nav_order' ), $parent_slug );
}
$nav = $group_nav->get_secondary(
array(
'parent_slug' => $parent_slug,
'user_has_access' => (bool) $n['user_has_access'],
)
);
// Build the nav for the displayed user
} elseif ( bp_is_user() ) {
$bp_nouveau->displayed_nav = 'personal';
$user_nav = buddypress()->members->nav;
if ( 'secondary' === $n['type'] ) {
$nav = $user_nav->get_secondary(
array(
'parent_slug' => bp_current_component(),
'user_has_access' => (bool) $n['user_has_access'],
)
);
} else {
$args = array();
if ( true === (bool) $n['show_for_displayed_user'] && ! bp_is_my_profile() ) {
$args = array( 'show_for_displayed_user' => true );
}
// Reorder the user's primary nav according to the customizer setting.
bp_nouveau_set_nav_item_order( $user_nav, bp_nouveau_get_appearance_settings( 'user_nav_order' ) );
$nav = $user_nav->get_primary( $args );
}
} elseif ( ! empty( $bp_nouveau->object_nav ) ) {
$bp_nouveau->displayed_nav = $bp_nouveau->object_nav;
/**
* Use the filter to use your specific Navigation.
* Use the $n param to check for your custom object.
*
* @since BuddyPress 3.0.0
*
* @param array $nav The list of item navigations generated by the BP_Core_Nav API.
* @param array $n The arguments of the Navigation loop.
*/
$nav = apply_filters( 'bp_nouveau_get_nav', $nav, $n );
}
// The navigation can be empty.
if ( $nav === false ) {
$nav = array();
}
$bp_nouveau->sorted_nav = array_values( $nav );
if ( 0 === count( $bp_nouveau->sorted_nav ) || ! $bp_nouveau->displayed_nav ) {
unset( $bp_nouveau->sorted_nav, $bp_nouveau->displayed_nav, $bp_nouveau->object_nav );
return false;
}
$bp_nouveau->current_nav_index = 0;
return true;
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 3.0.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.