/** * Load Custom tabs on BuddyPress * * @global object $bp global BuddyPress object */ function custom_media_nav_tab() { global $bp; if (!function_exists("bp_core_new_nav_item")) { return; } if (bp_is_blog_page() || !bp_is_group() && !(isset($bp->displayed_user) && isset($bp->displayed_user->id)) || apply_filters('rtmedia_render_bp_nav', false)) { return; } global $rtmedia; if (function_exists("bp_is_group") && !bp_is_group()) { if (isset($bp->displayed_user) && isset($bp->displayed_user->id)) { $profile_counts = $this->actual_counts($bp->displayed_user->id); } $tab_position = apply_filters('rtmedia_media_tab_position', 99); if ($rtmedia->options["buddypress_enableOnProfile"] != 0) { bp_core_new_nav_item(array('name' => RTMEDIA_MEDIA_LABEL . '<span>' . $profile_counts['total']['all'] . '</span>', 'slug' => apply_filters('rtmedia_media_tab_slug', RTMEDIA_MEDIA_SLUG), 'screen_function' => array($this, 'media_screen'), 'default_subnav_slug' => 'all', 'position' => $tab_position)); } } if (bp_is_group() && $rtmedia->options["buddypress_enableOnGroup"] != 0) { global $bp; $media_enabled = true; //filter for rtMedia PRO for PER GROUP MEDIA enable/disable functionality $media_enabled = apply_filters('rtmedia_media_enabled_for_current_group', $media_enabled); // check if current user can view this group $current_group = groups_get_current_group(); $is_visible_to_current_user = $current_group->is_visible; if ($media_enabled && $is_visible_to_current_user) { $group_counts = $this->actual_counts($bp->groups->current_group->id, "group"); $bp->bp_options_nav[bp_get_current_group_slug()]['media'] = array('name' => RTMEDIA_MEDIA_LABEL . '<span>' . $group_counts['total']['all'] . '</span>', 'link' => trailingslashit(bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . bp_get_current_group_slug() . '/') . RTMEDIA_MEDIA_SLUG, 'slug' => RTMEDIA_MEDIA_SLUG, 'user_has_access' => true, 'css_id' => 'rtmedia-media-nav', 'position' => 99, 'screen_function' => array($this, 'media_screen'), 'default_subnav_slug' => 'all'); } } }
/** * Load Custom tabs on BuddyPress * * @global object $bp global BuddyPress object */ function custom_media_nav_tab() { $bp = buddypress(); if (!function_exists('bp_core_new_nav_item')) { return; } if (bp_is_blog_page() || !bp_is_group() && !(isset($bp->displayed_user) && isset($bp->displayed_user->id)) || apply_filters('rtmedia_render_bp_nav', false)) { return; } global $rtmedia; if (function_exists('bp_is_group') && !bp_is_group()) { if (isset($bp->displayed_user) && isset($bp->displayed_user->id)) { $profile_counts = $this->actual_counts($bp->displayed_user->id); } $tab_position = apply_filters('rtmedia_media_tab_position', 99); if (0 !== intval($rtmedia->options['buddypress_enableOnProfile'])) { bp_core_new_nav_item(array('name' => RTMEDIA_MEDIA_LABEL . ' <span>' . $profile_counts['total']['all'] . '</span>', 'slug' => apply_filters('rtmedia_media_tab_slug', RTMEDIA_MEDIA_SLUG), 'screen_function' => array($this, 'media_screen'), 'default_subnav_slug' => 'all', 'position' => $tab_position)); } } if (bp_is_group() && 0 !== intval($rtmedia->options['buddypress_enableOnGroup'])) { $media_enabled = true; //filter for rtMedia PRO for PER GROUP MEDIA enable/disable functionality $media_enabled = apply_filters('rtmedia_media_enabled_for_current_group', $media_enabled); // check if current user can view this group $current_group = groups_get_current_group(); /** * remove `$current_group->is_visible` and add `bp_group_is_visible( $current_group )` * reason : In Buddypress 2.7 `is_visible` return false so we can't display `media` tab on group * issue id : http://git.rtcamp.com/rtmedia/rtMedia/issues/119 */ // $is_visible_to_current_user = $current_group->is_visible; $is_visible_to_current_user = bp_group_is_visible($current_group); if ($media_enabled && $is_visible_to_current_user) { $group_counts = $this->actual_counts($bp->groups->current_group->id, 'group'); $slug = apply_filters('rtmedia_group_media_tab_slug', RTMEDIA_MEDIA_SLUG); if (isset($bp->version) && $bp->version > '2.5.3') { /* * As from BuddyPress 2.6, you can't access $bp->bp_options_nav directly. * Use `bp_core_new_subnav_item` to add subnav item. * * Check https://buddypress.trac.wordpress.org/ticket/6534 and https://buddypress.trac.wordpress.org/changeset/10745 * for more details */ bp_core_new_subnav_item(array('name' => RTMEDIA_MEDIA_LABEL . ' <span>' . $group_counts['total']['all'] . '</span>', 'link' => trailingslashit(bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . bp_get_current_group_slug() . '/') . $slug, 'slug' => $slug, 'parent_slug' => bp_get_current_group_slug(), 'parent_url' => trailingslashit(bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . bp_get_current_group_slug() . '/'), 'user_has_access' => true, 'css_id' => 'rtmedia-media-nav', 'position' => 99, 'screen_function' => array($this, 'media_screen'), 'default_subnav_slug' => 'all')); } else { $bp->bp_options_nav[bp_get_current_group_slug()]['media'] = array('name' => RTMEDIA_MEDIA_LABEL . ' <span>' . $group_counts['total']['all'] . '</span>', 'link' => trailingslashit(bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . bp_get_current_group_slug() . '/') . $slug, 'slug' => $slug, 'user_has_access' => true, 'css_id' => 'rtmedia-media-nav', 'position' => 99, 'screen_function' => array($this, 'media_screen'), 'default_subnav_slug' => 'all'); } } } }
public function test_backcompat_remove_group_nav_items() { $g1 = $this->factory->group->create(); // In group context $g_obj = groups_get_group($g1); $this->go_to(bp_get_group_permalink($g_obj)); bp_core_new_subnav_item(array('name' => 'Clam', 'slug' => 'clam', 'parent_slug' => bp_get_current_group_slug(), 'parent_url' => bp_get_group_permalink($g_obj), 'screen_function' => 'clam_subnav')); bp_core_remove_subnav_item($g_obj->slug, 'clam'); $nav = bp_get_nav_menu_items('groups'); $found = false; foreach ($nav as $_nav) { if ('clam' === $_nav->css_id) { $found = true; break; } } $this->assertFalse($found); }
/** * Hook this extension's group tab into BuddyPress, if necessary * * @since BuddyPress (1.8) */ protected function setup_display_hooks() { // Bail if not a group if (!bp_is_group()) { return; } // Bail if the current user doesn't have access if ('public' !== $this->visibility && !buddypress()->groups->current_group->user_has_access) { return; } if (true === $this->enable_nav_item) { bp_core_new_subnav_item(array('name' => !$this->nav_item_name ? $this->name : $this->nav_item_name, 'slug' => $this->slug, 'parent_slug' => bp_get_current_group_slug(), 'parent_url' => bp_get_group_permalink(groups_get_current_group()), 'position' => $this->nav_item_position, 'item_css_id' => 'nav-' . $this->slug, 'screen_function' => array(&$this, '_display_hook'), 'user_has_access' => $this->enable_nav_item)); // When we are viewing the extension display page, set the title and options title if (bp_is_current_action($this->slug)) { add_action('bp_template_content_header', create_function('', 'echo "' . esc_attr($this->name) . '";')); add_action('bp_template_title', create_function('', 'echo "' . esc_attr($this->name) . '";')); } } // Hook the group home widget if (!bp_current_action() && bp_is_current_action('home')) { add_action($this->display_hook, array(&$this, 'widget_display')); } }
/** * Prints a linked list of all posts assigned to the buddypress $groupslug or if not set the current Buddypress group. * * @param string $groupslug slug of the buddypress_group taxonomy to get the post of (the slug should be sthe same as the real Buddypress group slug) */ function printPostsByBuddypressGroupTax($groupslug = NULL) { if (function_exists('bp_get_current_group_slug')) { if (is_null($groupslug)) { $currentgroup = bp_get_current_group_slug(); $posts = get_posts(array('numberposts' => -1, 'post_type' => 'post', 'tax_query' => array(array('taxonomy' => 'buddypress_groups', 'field' => 'slug', 'terms' => $currentgroup)))); if ($posts) { ?> <ul class="posts_by_buddypressgroup"> <?php foreach ($posts as $post) { ?> <li><a href="<?php echo esc_url(get_permalink($post->ID)); ?> " title="<?php echo esc_attr($post->post_title); ?> "><?php echo esc_html($post->post_title); ?> </a></li> <?php } ?> </ul> <?php } } } }
/** * Hook this extension's group tab into BuddyPress, if necessary. * * @since BuddyPress (1.8.0) */ protected function setup_display_hooks() { // Bail if not a group if (!bp_is_group()) { return; } // Backward compatibility only if ('public' !== $this->visibility && !buddypress()->groups->current_group->user_has_access) { return; } // If the user can see the nav item, we create it. $user_can_see_nav_item = $this->user_can_see_nav_item(); if ($user_can_see_nav_item) { $group_permalink = bp_get_group_permalink(groups_get_current_group()); bp_core_create_subnav_link(array('name' => !$this->nav_item_name ? $this->name : $this->nav_item_name, 'slug' => $this->slug, 'parent_slug' => bp_get_current_group_slug(), 'parent_url' => $group_permalink, 'position' => $this->nav_item_position, 'item_css_id' => 'nav-' . $this->slug, 'screen_function' => array(&$this, '_display_hook'), 'user_has_access' => $user_can_see_nav_item, 'no_access_url' => $group_permalink)); } // If the user can visit the screen, we register it. $user_can_visit = $this->user_can_visit(); if ($user_can_visit) { $group_permalink = bp_get_group_permalink(groups_get_current_group()); bp_core_register_subnav_screen_function(array('slug' => $this->slug, 'parent_slug' => bp_get_current_group_slug(), 'screen_function' => array(&$this, '_display_hook'), 'user_has_access' => $user_can_visit, 'no_access_url' => $group_permalink)); // When we are viewing the extension display page, set the title and options title if (bp_is_current_action($this->slug)) { add_filter('bp_group_user_has_access', array($this, 'group_access_protection'), 10, 2); add_action('bp_template_content_header', create_function('', 'echo "' . esc_attr($this->name) . '";')); add_action('bp_template_title', create_function('', 'echo "' . esc_attr($this->name) . '";')); } } // Hook the group home widget if (!bp_current_action() && bp_is_current_action('home')) { add_action($this->display_hook, array(&$this, 'widget_display')); } }
/** * @group groups */ public function test_bp_core_new_subnav_item_should_work_in_group_context() { $this->set_up_group(); bp_core_new_subnav_item(array('name' => 'Foo Subnav', 'slug' => 'foo-subnav', 'parent_slug' => bp_get_current_group_slug(), 'parent_url' => bp_get_group_permalink(groups_get_current_group()), 'screen_function' => 'foo_subnav')); $bp = buddypress(); // Touch bp_nav since we told PHPUnit it was expectedDeprecated. $f = $bp->bp_options_nav[bp_get_current_group_slug()]; $nav = bp_get_nav_menu_items('groups'); foreach ($nav as $_nav) { if ('foo-subnav' === $_nav->css_id) { $found = $_nav; break; } } $this->assertSame('Foo Subnav', $found->name); }
function rtmedia_pagination_page_link($page_no) { global $rtmedia_media, $rtmedia_interaction, $rtmedia_query; $page_url = 'pg/' . $page_no; $site_url = is_multisite() ? trailingslashit(get_site_url(get_current_blog_id())) : trailingslashit(get_site_url()); $author_name = get_query_var('author_name'); $link = ''; if ($rtmedia_interaction && isset($rtmedia_interaction->context) && $rtmedia_interaction->context->type == "profile") { if (function_exists("bp_core_get_user_domain")) { $link .= trailingslashit(bp_core_get_user_domain($rtmedia_query->media_query['media_author'])); } else { $link .= $site_url . 'author/' . $author_name . '/'; } } else { if ($rtmedia_interaction && isset($rtmedia_interaction->context) && $rtmedia_interaction->context->type == 'group') { if (function_exists("bp_get_current_group_slug")) { $link .= $site_url . bp_get_groups_root_slug() . '/' . bp_get_current_group_slug() . '/'; } } else { //$post = get_post ( $rtmedia_media->post_parent ); $post = get_post(get_post_field("post_parent", $rtmedia_query->media->media_id)); $link .= $site_url . $post->post_name . '/'; } } $link .= RTMEDIA_MEDIA_SLUG . '/'; if (isset($rtmedia_query->media_query["album_id"]) && intval($rtmedia_query->media_query["album_id"]) > 0) { $link .= $rtmedia_query->media_query["album_id"] . "/"; } if (isset($rtmedia_query->action_query->media_type)) { if (in_array($rtmedia_query->action_query->media_type, array("photo", "music", "video", "album", "playlist"))) { $link .= $rtmedia_query->action_query->media_type . '/'; } } return apply_filters('rtmedia_pagination_page_link', $link . $page_url, $link, $page_url); }
function get_create_link($link) { $slug = bp_get_current_group_slug(); if ($slug && current_user_can('bp_docs_associate_with_group', bp_get_current_group_id())) { $link = add_query_arg('group', $slug, $link); } return $link; }
/** * Add custom template hierarchy to theme compat for group pages. * * This is to mirror how WordPress has * {@link https://codex.wordpress.org/Template_Hierarchy template hierarchy}. * * @since BuddyPress (1.8.0) * * @param string $templates The templates from bp_get_theme_compat_templates(). * @return array $templates Array of custom templates to look for. */ public function single_template_hierarchy($templates) { // Setup some variables we're going to reference in our custom templates $group = groups_get_current_group(); // Setup our templates based on priority $new_templates = apply_filters('bp_template_hierarchy_groups_single_item', array('groups/single/index-id-' . sanitize_file_name(bp_get_current_group_id()) . '.php', 'groups/single/index-slug-' . sanitize_file_name(bp_get_current_group_slug()) . '.php', 'groups/single/index-action-' . sanitize_file_name(bp_current_action()) . '.php', 'groups/single/index-status-' . sanitize_file_name($group->status) . '.php', 'groups/single/index.php')); // Merge new templates with existing stack // @see bp_get_theme_compat_templates() $templates = array_merge((array) $new_templates, $templates); return $templates; }
/** * Get the component to which the a nav item belongs. * * We use the following heuristic to guess, based on an offset, which component the item belongs to: * - If this is a group, and the offset is the same as the current group's slug, it's a group nav item. * - Otherwise, it's a member nav item. * * @since 2.6.0 * * @param mixed $offset Array offset. * @return string */ public function get_component($offset = '') { if (!isset($this->component)) { if (bp_is_active('groups') && $offset === bp_get_current_group_slug()) { $this->component = 'groups'; } else { $this->component = 'members'; } } return $this->component; }
function get_create_link($link) { if (bp_is_group()) { $link = add_query_arg('group', bp_get_current_group_slug(), $link); } return $link; }
function display($group_id = null) { $this->appliquerCaracterePrive(); // paramètres automatiques : // - domaine racine $this->config['domainRoot'] = $this->getServerRoot(); // - URI de base $this->config['baseUri'] = $this->getBaseUri(); // - URI de base pour les données (/wp-content/*) $this->config['dataBaseUri'] = $this->getDataBaseUri(); // - nom de la liste if (empty($this->config['ezmlm-php']['list'])) { $this->config['ezmlm-php']['list'] = bp_get_current_group_slug(); } //var_dump($this->config); // portée des styles echo '<div class="wp-bootstrap">'; echo '<div id="ezmlm-forum-main">'; // amorcer l'outil chdir(dirname(__FILE__) . "/forum/"); require "ezmlm-forum.php"; $fc = new EzmlmForum($this->config); // front controller // - définir le titre // - inclure le corps de page $fc->renderPage(); echo "</div>"; echo "</div>"; }
function buatp_prepare_url($url = '') { global $bp; if (!$url) { return; } if ($url == 'current') { $url = str_replace(site_url(), '', buatp_get_full_url()); } $current_user = get_userdata($bp->displayed_user->id); if (function_exists('bp_get_current_group_slug')) { $current_group_slug = bp_get_current_group_slug(); } $bp_components = array('[user_name]' => $current_user->user_login, '[group_name]' => $current_group_slug); foreach ($bp_components as $code => $val) { if (strpos($url, $code) && $val) { $url = str_replace($code, $val, $url); } } return $url; }
/** * Hierarchy-aware replacement for bp_has_groups */ function bp_has_groups_hierarchy($args = '') { global $groups_template, $bp; /*** * Set the defaults based on the current page. Any of these will be overridden * if arguments are directly passed into the loop. Custom plugins should always * pass their parameters directly to the loop. */ $type = 'active'; $user_id = false; $search_terms = false; $slug = false; /* User filtering */ if (bp_displayed_user_id()) { $user_id = bp_displayed_user_id(); } /* Type */ if ('my-groups' == bp_current_action()) { if ('most-popular' == $order) { $type = 'popular'; } else { if ('alphabetically' == $order) { $type = 'alphabetical'; } } } else { if ('invites' == bp_current_action()) { $type = 'invites'; } else { if (bp_get_current_group_slug()) { $type = 'single-group'; $slug = bp_get_current_group_slug(); } } } if (isset($_REQUEST['group-filter-box']) || isset($_REQUEST['s'])) { $search_terms = isset($_REQUEST['group-filter-box']) ? $_REQUEST['group-filter-box'] : $_REQUEST['s']; } $defaults = array('type' => $type, 'page' => 1, 'per_page' => 20, 'max' => false, 'user_id' => $user_id, 'slug' => $slug, 'search_terms' => $search_terms, 'populate_extras' => true); $r = wp_parse_args($args, $defaults); extract($r); $groups_template = new BP_Groups_Hierarchy_Template((int) $user_id, $type, (int) $page, (int) $per_page, (int) $max, $slug, $search_terms, (bool) $populate_extras, (int) $parent_id); return apply_filters('bp_has_groups', $groups_template->has_groups(), $groups_template); }
/** * get media page link * * @global object $rtmedia_interaction * @global RTMediaQuery $rtmedia_query * * @param string $page_no * * @return string */ function rtmedia_pagination_page_link($page_no = '') { global $rtmedia_interaction, $rtmedia_query; $page_url = 'pg/' . $page_no; $site_url = is_multisite() ? trailingslashit(get_site_url(get_current_blog_id())) : trailingslashit(get_site_url()); $author_name = get_query_var('author_name'); $link = ''; if ($rtmedia_interaction && isset($rtmedia_interaction->context) && 'profile' === $rtmedia_interaction->context->type) { if (function_exists('bp_core_get_user_domain') && !empty($rtmedia_query->media_query['media_author'])) { $link .= trailingslashit(bp_core_get_user_domain($rtmedia_query->media_query['media_author'])); } else { $link .= $site_url . 'author/' . $author_name . '/'; } } else { if ($rtmedia_interaction && isset($rtmedia_interaction->context) && 'group' === $rtmedia_interaction->context->type) { if (function_exists('bp_get_current_group_slug')) { $link .= $site_url . bp_get_groups_root_slug() . '/' . bp_get_current_group_slug() . '/'; } } elseif (isset($rtmedia_query->media->media_id)) { $post = get_post(get_post_field('post_parent', $rtmedia_query->media->media_id)); $link .= $site_url . $post->post_name . '/'; } } $link .= RTMEDIA_MEDIA_SLUG . '/'; if (isset($rtmedia_query->media_query['album_id']) && intval($rtmedia_query->media_query['album_id']) > 0) { $link .= $rtmedia_query->media_query['album_id'] . '/'; } if (isset($rtmedia_query->action_query->media_type)) { $media_type_array = array('photo', 'music', 'video', 'album', 'playlist'); if (in_array($rtmedia_query->action_query->media_type, $media_type_array, true)) { $link .= $rtmedia_query->action_query->media_type . '/'; } } return apply_filters('rtmedia_pagination_page_link', $link . $page_url, $link, $page_url); }
/** * bp_group_documents_setup_nav() * * Sets up the navigation items for the component. * Adds documents item under the group navigation */ function bp_group_documents_setup_nav() { global $bp, $current_blog, $group_object; if (!class_exists('BP_Groups_Group')) { return false; } if (!isset($bp->groups->current_group->id)) { return false; } //if documents have been explicitly deactivated for this group, do not show menu if (!get_option('bp_group_documents_enable_all_groups') && groups_get_groupmeta($bp->groups->current_group->id, 'group_documents_documents_disabled')) { return false; } $groups_link = $bp->root_domain . '/' . $bp->groups->slug . '/'; if (isset($bp->groups->current_group->slug)) { $groups_link .= $bp->groups->current_group->slug . '/'; } /* Add the subnav item only to the single group nav item*/ if ($bp->is_single_item) { bp_core_new_subnav_item(array('name' => __('Documents', 'bp-group-documents'), 'slug' => $bp->group_documents->slug, 'parent_url' => $groups_link, 'parent_slug' => bp_get_current_group_slug(), 'screen_function' => 'bp_group_documents_display', 'position' => 35, 'user_has_access' => $bp->groups->current_group->user_has_access, 'item_css_id' => 'group-documents')); } do_action('bp_group_documents_nav_setup'); }
/** * Sets up the Calendar tab * * @package CollabPress * @subpackage CP BP * @since 1.2 */ function calendar_nav_setup() { bp_core_new_subnav_item(array('name' => __('Calendar', 'collabpress'), 'slug' => 'calendar', 'parent_slug' => bp_get_current_group_slug(), 'parent_url' => bp_get_group_permalink(groups_get_current_group()), 'screen_function' => array($this, '_calendar_display_hook'), 'position' => 34)); }
<?php /** * Apocrypha Theme Group Profile Template * Andrew Clayton * Version 2.0 * 10-18-2014 */ // Load the requested group if (bp_has_groups()) { while (bp_groups()) { bp_the_group(); // Specific group overrides $header = 'entropy-rising' == bp_get_current_group_slug() ? 'er' : ''; ?> <?php get_header($header); ?> <div id="content" role="main"> <?php apoc_breadcrumbs(); ?> <?php locate_template(array('groups/single/group-header.php'), true); ?> <div id="profile-body"> <?php
/** * Add an item to secondary navigation of the specified component. * * @since 1.1.0 * @since 2.6.0 Introduced the `$component` parameter. * * @param array|string $args { * Array describing the new subnav item. * @type string $name Display name for the subnav item. * @type string $slug Unique URL slug for the subnav item. * @type string $parent_slug Slug of the top-level nav item under which the new subnav item should * be added. * @type string $parent_url URL of the parent nav item. * @type bool|string $item_css_id Optional. 'id' attribute for the nav item. Default: the value of `$slug`. * @type bool $user_has_access Optional. True if the logged-in user has access to the subnav item, * otherwise false. Can be set dynamically when registering the subnav; * eg, use `bp_is_my_profile()` to restrict access to profile owners only. * Default: true. * @type bool $site_admin_only Optional. Whether the nav item should be visible only to site admins * (those with the 'bp_moderate' cap). Default: false. * @type int $position Optional. Numerical index specifying where the item should appear in the * subnav array. Default: 90. * @type callable $screen_function The callback function that will run when the nav item is clicked. * @type string $link Optional. The URL that the subnav item should point to. Defaults to a value * generated from the `$parent_url` + `$slug`. * @type bool $show_in_admin_bar Optional. Whether the nav item should be added into the group's "Edit" * Admin Bar menu for group admins. Default: false. * } * @param string $component The component the navigation is attached to. Defaults to 'members'. * @return bool|null Returns false on failure. */ 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; } }
/** * Add custom template hierarchy to theme compat for group pages. * * This is to mirror how WordPress has * {@link https://codex.wordpress.org/Template_Hierarchy template hierarchy}. * * @since 1.8.0 * * @param string $templates The templates from bp_get_theme_compat_templates(). * @return array $templates Array of custom templates to look for. */ public function single_template_hierarchy($templates) { // Setup some variables we're going to reference in our custom templates. $group = groups_get_current_group(); /** * Filters the Groups single pages template hierarchy based on priority. * * @since 1.8.0 * * @param array $value Array of default template files to use. */ $new_templates = apply_filters('bp_template_hierarchy_groups_single_item', array('groups/single/index-id-' . sanitize_file_name(bp_get_current_group_id()) . '.php', 'groups/single/index-slug-' . sanitize_file_name(bp_get_current_group_slug()) . '.php', 'groups/single/index-action-' . sanitize_file_name(bp_current_action()) . '.php', 'groups/single/index-status-' . sanitize_file_name($group->status) . '.php', 'groups/single/index.php')); // Merge new templates with existing stack. // @see bp_get_theme_compat_templates(). $templates = array_merge((array) $new_templates, $templates); return $templates; }
/** * Retourne l'URI de base de l'outil pour le groupe en cours (sans le domaine) * ex: "/wordpress/groups/flore-d-afrique-du-nord/forum" */ protected function getBaseUri() { $pageGroupes = $this->getBPPageSlug("groups"); $dossierRacine = $this->getDossierRacine(); $baseUri = '/'; if (!empty($dossierRacine)) { $baseUri .= $dossierRacine . '/'; } $baseUri .= $pageGroupes . '/'; $baseUri .= bp_get_current_group_slug() . '/'; $baseUri .= $this->slug; return $baseUri; }
/** * Echoes the output of bp_get_current_group_slug() * * @package BuddyPress * @since BuddyPress (1.5) */ function bp_current_group_slug() { echo bp_get_current_group_slug(); }
/** * Setup deposit group nav. */ public function humcore_setup_deposit_group_nav() { // Only grab count if we're on a group page. $count = 0; if (bp_is_group()) { $count = $this->humcore_get_group_deposit_count(); } $class = 0 === $count ? 'no-count' : 'count'; $nav_name = sprintf(__('Deposits <span class="%s">%s</span>', 'humcore_domain'), esc_attr($class), number_format_i18n($count)); bp_core_new_subnav_item(array('name' => $nav_name, 'slug' => 'deposits', 'parent_url' => bp_get_group_permalink(groups_get_current_group()), 'parent_slug' => bp_get_current_group_slug(), 'screen_function' => array($this, 'humcore_group_deposits_screen_function'), 'position' => 35)); }