Function Reference: geodir_buddypress_setup_nav
Summary
Setup navigation.
Package
GeoDirectory_BuddyPress_Integration
Change Log
Since: 1.0.0
Filters
‘geodir_buddypress_nav_.$parent_slug’ [Line: 574]
‘geodir_buddypress_subnav_.$parent_slug’ [Line: 577]
‘gdbuddypress_favourites_text’ [Line: 603]
‘gdbuddypress_favourites_text’ [Line: 641]
‘geodir_buddypress_nav_.$parent_slug’ [Line: 646]
‘geodir_buddypress_subnav_.$parent_slug’ [Line: 649]
‘geodir_buddypress_nav_.$parent_slug’ [Line: 714]
‘geodir_buddypress_subnav_.$parent_slug’ [Line: 717]
Source File
geodir_buddypress_setup_nav() is located in geodir_buddypress/includes/gdbuddypress_functions.php [Line: 509]
Source Code
function geodir_buddypress_setup_nav() {
$gd_post_types = geodir_get_posttypes( 'array' );
if ( empty( $gd_post_types ) ) {
return;
}
global $bp;
$user_domain = geodir_buddypress_get_user_domain();
// listings
$listing_post_types = get_option( 'geodir_buddypress_tab_listing' );
$position = 70;
if ( !empty( $listing_post_types ) ) {
$parent_slug = 'listings';
$parent_url = trailingslashit( $user_domain . $parent_slug );
$parent_nav = array();
$sub_nav = array();
$count = 0;
$total_count = 0;
foreach ( $listing_post_types as $post_type ) {
if ( array_key_exists( $post_type, $gd_post_types ) ) {
$tab_slug = $gd_post_types[$post_type]['has_archive'];
if ( $count == 0 ) {
// parent nav
$parent_nav = array(
'name' => __( 'Listings', GDBUDDYPRESS_TEXTDOMAIN ),
'slug' => $parent_slug,
'parent_slug' => $bp->profile->slug,
'screen_function' => 'geodir_buddypress_screen_' . $parent_slug,
'default_subnav_slug' => $tab_slug,
'position' => $position,
'item_css_id' => 'gdbuddypress-nav-' . $parent_slug
);
}
// get listing count
$listing_count = geodir_buddypress_count_total( $post_type );
$class = ( 0 === $listing_count ) ? 'no-count' : 'count';
$total_count += $listing_count;
// sub nav
$sub_nav[] = array(
'name' => wp_sprintf( __( '%s %s', GDBUDDYPRESS_TEXTDOMAIN ), __( $gd_post_types[$post_type]['labels']['name'], GDBUDDYPRESS_TEXTDOMAIN ), esc_attr( $class ), number_format_i18n( $listing_count ) ),
'slug' => $tab_slug,
'parent_url' => $parent_url,
'parent_slug' => $parent_slug,
'screen_function' => 'geodir_buddypress_screen_' . $parent_slug,
'position' => $position,
'item_css_id' => 'gdbuddypress-nav-' . $parent_slug . '-' . $tab_slug
);
$count++;
}
}
if ( !empty( $parent_nav ) ) {
$class = ( 0 === $total_count ) ? 'no-count' : 'count';
$parent_nav['name'] = wp_sprintf( __( 'Listings %s', GDBUDDYPRESS_TEXTDOMAIN ), esc_attr( $class ), number_format_i18n( $total_count ) );
}
if ( !empty( $parent_nav ) && !empty( $sub_nav ) ) {
$parent_nav = apply_filters( 'geodir_buddypress_nav_' . $parent_slug, $parent_nav );
bp_core_new_nav_item( $parent_nav );
$sub_nav = apply_filters( 'geodir_buddypress_subnav_' . $parent_slug, $sub_nav );
// Sub nav items are not required
if ( !empty( $sub_nav ) ) {
foreach( $sub_nav as $nav ) {
bp_core_new_subnav_item( $nav );
}
}
}
}
// favorites
$listing_post_types = get_option( 'geodir_buddypress_tab_listing' );
if ( !empty( $listing_post_types ) ) {
$parent_slug = 'favorites';
$parent_url = trailingslashit( $user_domain . $parent_slug );
$parent_nav = array();
$sub_nav = array();
$count = 0;
$total_count = 0;
foreach ( $listing_post_types as $post_type ) {
if ( array_key_exists( $post_type, $gd_post_types ) ) {
$tab_slug = $gd_post_types[$post_type]['has_archive'];
if ( $count == 0 ) {
$fav_name = __( 'Favorites', GDBUDDYPRESS_TEXTDOMAIN );
$favourite_text = apply_filters('gdbuddypress_favourites_text', $fav_name);
// parent nav
$parent_nav = array(
'name' => $favourite_text,
'slug' => $parent_slug,
'parent_slug' => $bp->profile->slug,
'screen_function' => 'geodir_buddypress_screen_' . $parent_slug,
'default_subnav_slug' => $tab_slug,
'position' => $position,
'item_css_id' => 'gdbuddypress-nav-' . $parent_slug
);
}
$position = $position + 5;
// get listing count
$listing_count = geodir_buddypress_count_favorite( $post_type );
$class = ( 0 === $listing_count ) ? 'no-count' : 'count';
$total_count += $listing_count;
// sub nav
$sub_nav[] = array(
'name' => wp_sprintf( __( '%s %s', GDBUDDYPRESS_TEXTDOMAIN ), __( $gd_post_types[$post_type]['labels']['name'], GDBUDDYPRESS_TEXTDOMAIN ), esc_attr( $class ), number_format_i18n( $listing_count ) ),
'slug' => $tab_slug,
'parent_url' => $parent_url,
'parent_slug' => $parent_slug,
'screen_function' => 'geodir_buddypress_screen_' . $parent_slug,
'position' => $position,
'item_css_id' => 'gdbuddypress-nav-' . $parent_slug . '-' . $tab_slug
);
$count++;
}
}
if ( !empty( $parent_nav ) ) {
$class = ( 0 === $total_count ) ? 'no-count' : 'count';
$fav_name = __( 'Favorites', GDBUDDYPRESS_TEXTDOMAIN );
$favourite_text = apply_filters('gdbuddypress_favourites_text', $fav_name);
$parent_nav['name'] = wp_sprintf( __( '%s %s', GDBUDDYPRESS_TEXTDOMAIN ), $favourite_text, esc_attr( $class ), number_format_i18n( $total_count ) );
}
if ( !empty( $parent_nav ) && !empty( $sub_nav ) ) {
$parent_nav = apply_filters( 'geodir_buddypress_nav_' . $parent_slug, $parent_nav );
bp_core_new_nav_item( $parent_nav );
$sub_nav = apply_filters( 'geodir_buddypress_subnav_' . $parent_slug, $sub_nav );
// Sub nav items are not required
if ( !empty( $sub_nav ) ) {
foreach( $sub_nav as $nav ) {
bp_core_new_subnav_item( $nav );
}
}
}
}
// reviews
$review_post_types = get_option( 'geodir_buddypress_tab_review' );
if ( !empty( $review_post_types ) ) {
$parent_slug = 'reviews';
$parent_url = trailingslashit( $user_domain . $parent_slug );
$parent_nav = array();
$sub_nav = array();
$count = 0;
$total_count = 0;
foreach ( $review_post_types as $post_type ) {
if ( array_key_exists( $post_type, $gd_post_types ) ) {
$tab_slug = $gd_post_types[$post_type]['has_archive'];
if ( $count == 0 ) {
// parent nav
$parent_nav = array(
'name' => __( 'Reviews', GDBUDDYPRESS_TEXTDOMAIN ),
'slug' => $parent_slug,
'parent_slug' => $bp->profile->slug,
'screen_function' => 'geodir_buddypress_screen_' . $parent_slug,
'default_subnav_slug' => $tab_slug,
'position' => $position,
'item_css_id' => 'gdbuddypress-nav-' . $parent_slug
);
}
$position = $position + 5;
// get review count
$review_count = geodir_buddypress_count_reviews( $post_type );
$class = ( 0 === $review_count ) ? 'no-count' : 'count';
$total_count += $review_count;
// sub nav
$sub_nav[] = array(
'name' => wp_sprintf( __( '%s %s', GDBUDDYPRESS_TEXTDOMAIN ), __( $gd_post_types[$post_type]['labels']['name'], GDBUDDYPRESS_TEXTDOMAIN ), esc_attr( $class ), number_format_i18n( $review_count ) ),
'slug' => $tab_slug,
'parent_url' => $parent_url,
'parent_slug' => $parent_slug,
'screen_function' => 'geodir_buddypress_screen_' . $parent_slug,
'position' => $position,
'item_css_id' => 'gdbuddypress-nav-' . $parent_slug . '-' . $tab_slug
);
$count++;
}
}
if ( !empty( $parent_nav ) ) {
$class = ( 0 === $total_count ) ? 'no-count' : 'count';
$parent_nav['name'] = wp_sprintf( __( 'Reviews %s', GDBUDDYPRESS_TEXTDOMAIN ), esc_attr( $class ), number_format_i18n( $total_count ) );
}
if ( !empty( $parent_nav ) && !empty( $sub_nav ) ) {
$parent_nav = apply_filters( 'geodir_buddypress_nav_' . $parent_slug, $parent_nav );
bp_core_new_nav_item( $parent_nav );
$sub_nav = apply_filters( 'geodir_buddypress_subnav_' . $parent_slug, $sub_nav );
// Sub nav items are not required
if ( !empty( $sub_nav ) ) {
foreach( $sub_nav as $nav ) {
bp_core_new_subnav_item( $nav );
}
}
}
}
}