Skip to:
Content
Pages
Categories
Search
Top
Bottom

Search Results for 'display user role on profile page'

Viewing 25 results - 1 through 25 (of 47 total)
  • Author
    Search Results
  • Kir 2012
    Participant

    Hi folks, I’ve tried searching for this but perhaps I can’t find the correct words to search.

    I’m looking to make it possible, in edit profile, to add a profile field that allows the user to select other users of a certain role type or member type, and then they will display at their profile page with an avatar.

    So if my users were all shops and products, with role or member type shop, and role or member type product, and I would like to allow shops to perhaps type into a multi-select box to pull up from the user database, the users in the role or member type products, and select them, and they would display on their page.
    It’s kind of similar to a ‘relationships’ plugin but a bit more basic I guess. Can anyone point me in the right direction?

    Kind regards

    ega3wy4aha
    Participant

    Hello.
    I thought I could represent the message tab on any page by inserting the code from messages.php as a PHP snippet on other pages. However, nothing is being displayed on the page, and it seems to be returning 0. I want to display the content of the message tab content on pages other than the logined user’s profile page. Are there any limitations, such as it only appearing on pages with ‘slug=members’? I would appreciate some advice on how to display the content of the message content to other page.

    messages.php
    >>>
    <nav class=”<?php bp_nouveau_single_item_subnav_classes(); ?>” id=”subnav” role=”navigation” aria-label=”<?php esc_attr_e( ‘Messages menu’, ‘buddypress’ ); ?>”>
    <ul class=”subnav”>
    <?php bp_get_template_part( ‘members/single/parts/item-subnav’ ); ?>

    </nav><!– .bp-navs –>
    <?php
    if ( ! in_array( bp_current_action(), array( ‘inbox’, ‘sentbox’, ‘starred’, ‘view’, ‘compose’, ‘notices’ ), true ) ) :
    bp_get_template_part( ‘members/single/plugins’ );
    else :
    bp_nouveau_messages_member_interface();
    endif;
    ?>

    #331041
    rammysons
    Participant

    Hello,

    It seems like you’re working on a multi-author website and you’re looking for a way to control access to user profiles. Specifically, you’ve implemented code to deny access to administrators’ profiles, and you’re interested in extending this functionality to subscribers as well.

    To achieve this, you can modify the code you provided to include conditions for subscribers. Here’s an example of how you might achieve this:

    php
    Copy code
    // deny access to admins and subscribers profiles. Users are redirected to the homepage
    function bpfr_hide_admins_and_subs_profile() {
    global $bp;

    // Get the current user’s role
    $current_user = wp_get_current_user();
    $user_roles = $current_user->roles;

    // Check if the user is an admin or a subscriber
    if (bp_is_profile && $bp->loggedin_user->id != 1 &&
    (in_array(‘administrator’, $user_roles) || in_array(‘subscriber’, $user_roles))) :
    wp_redirect(home_url());
    exit;
    endif;
    }
    add_action(‘wp’, ‘bpfr_hide_admins_and_subs_profile’, 1);
    This code snippet checks if the currently displayed user’s role is either “administrator” or “subscriber,” and if the conditions are met, it redirects the user to the homepage.

    Remember to replace ‘administrator’ and ‘subscriber’ with the actual role names used in your WordPress setup.

    Thank you for reaching out, and a special shoutout to “TWITCHFOLLOWERFORGE“. If you have any further questions or need additional assistance, feel free to ask!

    #320158
    pooriaarab
    Participant

    Hi Shane,

    Thanks for the quick reply and it actually worked! Thank you 🙂

    The sidebar shows for a specific user type now but it shows up in the wrong location. I tried the code in different places but it’s in the middle of the profile now and want it to be on the left side like the normal sidebar for user profile.

    The first part of the code is the simplified version you mentioned and the css styling. The rest is the remaining of the loop on that page. I suppose the code should go somewhere in there:

    </div><!-- #item-body -->
                <?php
                $member_type = bp_get_member_type( bp_displayed_user_id() );
           if ( $member_type == 'club' ) {?>
               <div id="secondary" class="widget-area sm-grid-1-1 no-padding-top" role="complementary">
                   <div class="bb-sticky-sidebar">
                       <?php dynamic_sidebar( 'club_sidebar'); ?>
                   </div>
               </div>
           <?php
            }
           
           ?>
       <?php
                    
                if ( ( !isset($bp_nouveau_appearance['user_nav_display']) || !$bp_nouveau_appearance['user_nav_display'] ) && is_active_sidebar('user_activity') && bp_is_user_activity() ) {
    
    				ob_start();
    				dynamic_sidebar('user_activity' );
    				$sidebar = ob_get_clean();  // get the contents of the buffer and turn it off.
    				if ( trim( $sidebar ) ) { ?>
    					<div id="user-activity" class="widget-area" role="complementary">
    						<div class="bb-sticky-sidebar">
    							<?php dynamic_sidebar( 'user_activity' ); ?>
    						</div>
    					</div><?php
    				}
    			}
              
    			if ( ( !isset($bp_nouveau_appearance['user_nav_display']) || !$bp_nouveau_appearance['user_nav_display'] ) && is_active_sidebar( 'profile' ) && !bp_is_user_settings() && !bp_is_user_messages() && !bp_is_user_notifications() && !bp_is_user_profile_edit() && !bp_is_user_change_avatar() && !bp_is_user_change_cover_image() && !bp_is_user_front() && $profile_cover_width == 'full' ) {
    
    			    ob_start();
    	            dynamic_sidebar('profile' );
    	            $sidebar = ob_get_clean();  // get the contents of the buffer and turn it off.
    				if ( trim( $sidebar ) ) { ?>
    					<div id="secondary" class="widget-area sm-grid-1-1 no-padding-top" role="complementary">
    						<div class="bb-sticky-sidebar">
    							<?php dynamic_sidebar( 'profile'); ?>
    						</div>
    					</div>
    					<?php
    				}
    			}
    			?>
    		</div>
    
    	</div><!-- // .bp-wrap -->
        	<?php if ( isset($bp_nouveau_appearance['user_nav_display']) && $bp_nouveau_appearance['user_nav_display'] &&  is_active_sidebar( 'profile' ) && !bp_is_user_settings() && !bp_is_user_messages() && !bp_is_user_notifications() && !bp_is_user_profile_edit() && !bp_is_user_change_avatar() && !bp_is_user_change_cover_image() && !bp_is_user_front() && $profile_cover_width != 'default' ) { ?>
    			</div>
    
    			<?php
    			ob_start();
    			dynamic_sidebar('profile' );
    			$sidebar = ob_get_clean();  // get the contents of the buffer and turn it off.
    			if ( trim( $sidebar ) ) {
    				?>
    				<div id="secondary" class="widget-area sm-grid-1-1 no-padding-top" role="complementary">
    					<div class="bb-sticky-sidebar">
    						<?php dynamic_sidebar( 'profile'); ?>
    					</div>
    				</div>
    				<?php
    			}
    			?>
    

    This is a screenshot of where the sidebar is appearing:

    Certificates is in the middle. How can it be in the place of cart?

    -How can I move the sidebar (Certificates) to where the left sidebar (Cart) is?

    -And how can I repeat this process for 3 different user types? 3 custom sidebars for 3 user types.

    -I was not sure what “ob_start()” and “bp_nouveau_appearance” were that appear in the beginning of the other sidebar code. How can I add them to the custom sidebar? Are they even necessary?

    Appreciate the support and the community around BuddyPress

    lynnapp
    Participant

    Hi,
    I have been using the below code, So when someone clicks on the profile of an association it will redirect to the products tab.
    All is well and I can use the other tabs to navigate around except when I click on the activities tab. It takes me to the products tab users cannot see the associations (role) activity stream.

    I removed this code and it worked fine so it is some where here. I have this in the child-theme/buddypress-nouveau/members/single/home.php page

    WP Version 5.7.2 PHP 7.4.12

    	$displayed_user =  new WP_User( bp_displayed_user_id() );
    
    	if  ( ( in_array( 'associations', $displayed_user->roles, true ))   &&  
    		(strpos($_SERVER['REQUEST_URI'], "my-products") == false)  &&
    		(strpos($_SERVER['REQUEST_URI'], "front") == false)  &&
    		(strpos($_SERVER['REQUEST_URI'], "profile") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "activity") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "friends") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "my-donations") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "notifications") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "messages") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "groups") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "location") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "invite-anyone") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "settings") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "w-my-account") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "store-manager") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "articles") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "media") == false) &&
    		(strpos($_SERVER['REQUEST_URI'], "item-header-content") == false) 
    		) 
     
    	{
     //is assoc and is not already redirected to products or other profile links
    	$currenturl =  $_SERVER['REQUEST_URI'];
        	$urlto = $currenturl."my-products";
    ?>
            <script>
    	window.location.replace("<?php echo($urlto); ?>");
    	</script>
    <?php	
    
      	} else {  //  just load
    ?>
    

    Thank you for helping with this

    varkoff
    Participant

    Project Details :
    – WordPress version : 5.5.3
    – BuddyPress version : 6.3.0
    – Website Link : https://microfarmap.dev-local.com/
    – Other plugins I use : Advanced Custom Fields PRO, Advanced Custom Fields: JSON, bbPress, bbPress – Moderation Tools, BuddyForm Premium, BuddyForm Advanced Custom Fields, BuddyForm Hook Fields, BuddoForm Members Premium, BuddyPress Username Changer, Custom Post Type UI, LoginPress, Paid Memberships Pro, Progress Map, List & Filter, User Role Editor …

    Hello,
    I have been updating a WordPress website that was made by others, I might lack some information.

    BuddyPress works like a charm except for a few features :

    – From the user profile, we can send friendship requests. As a new user, I sent a friendship request to my admin account. I did receive the notification on my admin profile, but the Friends tab says there is no friend requests pending. It just doesn’t display theme on my customized Understrap theme.

    – Switching to WordPress Twenty Twenty One theme does solve the issues. Switching to Understrap parent theme does switch the issue. There seems to be a problem with my custom theme.

    Under this custom there, there is a /buddypress/ directory with template pages and loops. The buddypress/members/single/friends/requests-loop.php file was not modified, it’s the default one. That’s where I checked first.

    I also checked in the plugin files directly, under plugins/buddypress/bp-friends/bp-friends-functions.php but did not find a clue.

    After some research, I found out that only users that have an active ‘ Paid Memberships Pro ‘ subscription can send friend requests, or atleast their friend requests appear.

    I also installed the ” BuddyPress Integration ” plugin from Paid Memberships Pro website, in which there is an option to allow non-registered users to send friend requests, but it did not solve the issue.

    Please if you need more details or even an access, do not mind asking.

    lilipilon
    Participant

    Hello,

    I have buddyforms and Buddypress and the extended profile.

    When I want to modify the profile on front-end :
    – if I am admin ==> I can modify all fields
    – If am the member ==> I have a blank page on modify

    So, I would like to know how to display the fields when the member connect please ?

    Is this link to user role ? To an another extension ?

    #316135
    haitianguy
    Participant

    Hi, i feel like im doing this properly but i never get the right result. i have a custom meta called “featured” in activity meta. For testing purposes the meta values are 1,2,3,4 my goal is to have an activity loop order activities by the meta value. i’ve checked the documentation and i came up with this.

    
    <?php
    
    get_header(); ?>
    
    <?php get_template_part('page-parts/general-title-section'); ?>
    
    <?php get_template_part('page-parts/general-before-wrap');
    
    $atts =  array(
    			'title'            => 'Latest Activity',// title of the section.
    			'pagination'       => 1,// show or not.
    			'load_more'        => 0,
    			'display_comments' => 'threaded',
    			'include'          => false,     // pass an activity_id or string of IDs comma-separated
    			'exclude'          => false,     // pass an activity_id or string of IDs comma-separated
    			'in'               => false,     // comma-separated list or array of activity IDs among which to search
    			'sort'             => 'DESC',    // sort DESC or ASC
    			'page'             => 1,         // which page to load
    			'per_page'         => 5,         // how many per page.
    			'max'              => false,     // max number to return.
    			'count_total'      => true,
    
    			// Scope - pre-built activity filters for a user (friends/groups/favorites/mentions).
    			'scope'            => false,
    
    			// Filtering
    			'user_id'          => false,    // user_id to filter on
    			'object'           => false,    // object to filter on e.g. groups, profile, status, friends
    			'action'           => false,    // action to filter on e.g. activity_update, new_forum_post, profile_updated
    			'primary_id'       => false,    // object ID to filter on e.g. a group_id or forum_id or blog_id etc.
    			'secondary_id'     => false,    // secondary object ID to filter on e.g. a post_id.
    
    			// Searching
    			'search_terms'     => false,         // specify terms to search on.
    			'use_compat'       => bp_use_theme_compat_with_current_theme(),
    			'allow_posting'    => false,    // experimental, some of the themes may not support it.
    			'container_class'  => 'activity',// default container,
    			'hide_on_activity' => 1,// hide on user and group activity pages.
    			'for'              => '', // 'logged','displayed','author'.
    			'role'             => '', // use one or more role here(e.g administrator,editor etc).
                'for_group'        => '',// group slug.
    		);
    
    		$atts['meta_query']= array(
                                        array(
                                            'key' => 'featured',
                                            'value' => '0',
                                            'type' => 'numeric',
                                            'compare' => '!=',
                                            ),
                                            'meta_type' => 'numeric',
                                    'orderby' => 'meta_value_num',
                                    'meta_key' => 'featured',
                                    'order' => 'DESC'
                                    );
    
     ?>
    			<div id="buddypress">
    	
    
    		<?php do_action( 'bp_before_activity_loop' ); 
    		
    		
    		
    	
    
    if ( bp_has_activities( $atts ) ) : ?>
    
                <div class="<?php echo esc_attr( $atts['container_class'] ); ?> 
                <?php if ( ! $atts['display_comments'] ) : ?> hide-activity-comments<?php endif; ?>">
    
                    <ul id="activity-stream" class="activity-list item-list">
    
    					<?php while ( bp_activities() ) : bp_the_activity(); ?>
    						
    						<?php bp_get_template_part( 'buddypress/activity/entry' ); ?>
    					<?php endwhile; ?>
    
    					<?php if ( $atts['load_more'] && bp_activity_has_more_items() ) : ?>
                            <li class="load-more">
                                <a href="<?php bp_activity_load_more_link() ?>"><?php _e( 'Load More', 'buddypress' ); ?></a>
                            </li>
    					<?php endif; ?>
                    </ul>
    
    				<?php if ( $atts['pagination'] && ! $atts['load_more'] ) : ?>
                        <div class="pagination">
                            <div class="pag-count"><?php bp_activity_pagination_count(); ?></div>
                            <div class="pagination-links"><?php bp_activity_pagination_links(); ?></div>
                        </div>
    				<?php endif; ?>
    
                </div> 
    
            <?php else : ?>
                <div id="message" class="info">
                    <p><?php _e( 'Sorry, there was no activity found. Please try a different filter.', 'buddypress' ); ?></p>
                </div>
            <?php endif; ?>
            
    ?>
    			</div>
    		
    
    		<?php do_action( 'bp_after_activity_loop' ); ?>
    
    <?php get_template_part('page-parts/general-after-wrap'); ?>
    
    <?php get_footer(); ?>
    

    everything here works except for the order. for some reason it always orders by activity ID. am i missing something here? Thanks in advance im going crazy with this.

    #305446
    webmister76
    Participant

    Hi guys 🙂
    My users have many custom fields in their profile.
    I’m trying to create a member page, with different loops, because I need to split them in different groups with different criteria.

    I’m using the my_custom_ids function, but I’m getting crazy…

    <?php if ( bp_has_members( my_custom_ids( 'Nome', 'testB' ) ) ) : ?>
    is working. The loop displays only one user, named “testB”

    <?php if ( bp_has_members( my_custom_ids( 'Nickname', 'web9' ) ) ) : ?>
    is working. The loop displays only one user, with the nickname “web9”

    <?php if ( bp_has_members( my_custom_ids( ‘Role’, ‘iscritto’ ) ) ) : ?>
    is NOT working. Also Administrators are displayed.
    This is not the only problem. It happens also with other fields, but I can’t understand why…

    #304842
    jennifersanchez
    Participant

    Hi Venutio! I modified this

    function devb_show_role_on_profile()
    {    global $wp_roles;
        $user_id = bp_displayed_user_id();
        $user = get_userdata($user_id);
        $roles = $user->roles;
        if (!$roles)        return;
        if (!isset($wp_roles))        $wp_roles = new WP_Roles();
        $named_roles = array();
        foreach ($roles as $role) {
            $named_roles [] = $wp_roles->role_names[$role];    }
        if ($named_roles)        return '<span class="user-role activity">' . join(', ', $named_roles) . '</span>';
    }
    add_filter('eo_title_content_html_below_title', 'devb_show_role_on_profile');

    This works and show it in the cover page of the profile.
    the problem is in the other pages like group or other page out of my profile (when i open it) this error appear in the cover page:
    NOTICE: TRYING TO GET PROPERTY ‘ROLES’ OF NON-OBJECT IN

    I tried with !null but it didnt work.
    Any suggest?
    Thanks!!

    #304471
    jennifersanchez
    Participant

    Hi!
    I saw this code for add the role in the profile of the User.
    I want show it in the cover page of his profile, can you help me?
    Thanks very much!

    add_action( 'bp_before_member_header_meta', 'devb_show_role_on_profile' );
     
    function devb_show_role_on_profile() {
        global $wp_roles;
     
        $user_id = bp_displayed_user_id();
     
        $user = get_userdata($user_id);
     
        $roles = $user->roles;
     
        if ( !$roles )
            return;
     
        if ( !isset( $wp_roles ) )
            $wp_roles = new WP_Roles();
     
        $named_roles = array();
     
        foreach ( $roles as $role ) {
     
            $named_roles [] = $wp_roles->role_names[$role];
        }
     
        if ( $named_roles )
            echo '<span class="user-role activity">' . join(', ', $named_roles) . '</span>';
    }
    #304097
    Venutius
    Moderator

    First of all, I got the filename wrong, it’s home.php you need to edit.

    This should be about the easiest bit of php you can get. But you will need to get ftp access to your site then create a buddypress/members/single directory in your themes/childtheme directory. Then take a copy of the source home.php file.

    Home.php creates the basic content for the profile page and if you open it up you will see a section as follows:

    		<?php if ( ! bp_nouveau_is_object_nav_in_sidebar() ) : ?>
    
    			<?php bp_get_template_part( 'members/single/parts/item-nav' ); ?>
    
    		<?php endif; ?>

    This is what calls the navigation, at the moment it’s the second item being loaded, you want it to be the first, so you just need to move it as follows:

    ?>
    		<?php if ( ! bp_nouveau_is_object_nav_in_sidebar() ) : ?>
    
    			<?php bp_get_template_part( 'members/single/parts/item-nav' ); ?>
    
    		<?php endif; ?>
    
    	<?php bp_nouveau_member_hook( 'before', 'home_content' ); ?>
    
    	<div id="item-header" role="complementary" data-bp-item-id="<?php echo esc_attr( bp_displayed_user_id() ); ?>" data-bp-item-component="members" class="users-header single-headers">
    
    		<?php bp_nouveau_member_header_template_part(); ?>
    
    	</div><!-- #item-header -->
    
    	<div class="bp-wrap">
    
    		<div id="item-body" class="item-body">
    
    			<?php bp_nouveau_member_template_part(); ?>
    
    		</div><!-- #item-body -->
    	</div><!-- // .bp-wrap -->
    
    	<?php bp_nouveau_member_hook( 'after', 'home_content' ); ?>
    

    Once you’ve done that use ftp to copy your updated file to themes/child-theme/buddypress/members/single/home.php and test. that should do it.

    #281268
    oliviergodefroit
    Participant

    Yes excuse me. I would like to dislpay only one specific role on profile page, to certify this user is certified by the moderator.

    here is the code:

    
    add_action( 'bp_before_member_header_meta', 'verifed_profile_check' );
    function verifed_profile_check( ) {
    		
      if ( $role = 'certified_subscribers' ) 
    	echo '<span class="pmpro_label"> CERTIFIED PROFILE </span>';
      }
    

    This code display ‘CERTIFIED PROFILE’ to all profiles but should only display it for users role ‘certified_subscribers’

    #279506
    entoen
    Participant

    Hi, thank you for your message. The link shows solutions for the role a visitor has when on a profile page. I would like to remove a tab on a profile when the profile owner (bp_displayed_user_id) doesn’t have a certain role.
    I think i am close but i could be miles off:(
    Here is where i am but it doesnt work

    //Disable bookings subnav by role of the displayed user id.
     
    function remove_bookingtab_by_displayed_role() {
    
        // Get Current User Data.
        $user = get_userdata( bp_displayed_user_id() );
    
        // Get Roles.
        $roles = (array) $user->roles;
    	
    // exclamationmark means not in array i hope
        if (!in_array( 'translator', $roles ) ) {
    		bp_core_remove_subnav_item( 'bookings','booking' );
    	}
    	
    }
    
    add_action( 'bp_setup_nav', 'function remove_bookingtab_by_displayed_role', 15 );
    
    #276684
    israel4lincelot
    Participant

    Hi!

    I’m having some hard time with the following:

    I want to place my profile avatar (item-header-avatar) from the header to the left from my item-nav and eventually delete the header section.

    I’m editing the member-header.php file through my child-theme ( using Kleo-theme ). I thought it would be as easy as copying the div from item-header-avatar and pasting it after <ul class=”responsive-tabs”> but after loading the webpage it does not work.

    So my code looks like this:


    <?php

    /**
    * Fires after the display of a member's header.
    *
    * @since 1.2.0
    */
    do_action( 'bp_after_member_header' ); ?>

    <?php if ( sq_option( 'bp_nav_overlay', 0 ) == 1 ) : ?>
    <div id="item-nav">
    <div class="item-list-tabs no-ajax" id="object-nav" aria-label="<?php esc_attr_e( 'Member primary navigation', 'buddypress' ); ?>" role="navigation">
    <ul class="responsive-tabs">
    <div id="item-header-avatar" class="rounded">
    ">

    <?php bp_displayed_user_avatar( 'type=full' ); ?>


    <?php do_action('bp_member_online_status', bp_displayed_user_id()); ?>
    </div><!-- #item-header-avatar -->

    <?php bp_get_displayed_user_nav(); ?>

    <?php

    /**
    * Fires after the display of member options navigation.
    *
    * @since 1.2.4
    */
    do_action( 'bp_member_options_nav' ); ?>

    </div>
    </div>
    <!-- #item-nav -->
    <?php endif; ?>

    Thankyou!!

    #273176
    panosa1973
    Participant

    Is this a bug? I’ve been trying to figure this out for days. Why does my custom member directory revert to the default when I sort it??? I load it, it works fine and outputs the filtered users. I sort it by Alphabetical order (for example) and it gives me all users again. Does anyone have an idea why this is happening?

    [members-loop-2.php]

    <?php
    /**
     * BuddyPress - Members Loop
     *
     * Querystring is set via AJAX in _inc/ajax.php - bp_legacy_theme_object_filter()
     *
     * @package BuddyPress
     * @subpackage bp-legacy
     */
    
    /**
     * Fires before the display of the members loop.
     *
     * @since 1.2.0
     */
    do_action( 'bp_before_members_loop' ); ?>
    
    <?php if ( bp_get_current_member_type() ) : ?>
    	<p class="current-member-type"><?php bp_current_member_type_message() ?></p>
    <?php endif; ?>
    
    <?php if ( bp_has_members( bp_ajax_querystring( 'members' ) .'&include=' .get_user_matches()  ) ) : ?>
    
    	<div id="pag-top" class="pagination">
    
    		<div class="pag-count" id="member-dir-count-top">
    
    			<?php //bp_members_pagination_count(); ?>
    
    		</div>
    
    		<div class="pagination-links" id="member-dir-pag-top">
    
    			<?php bp_members_pagination_links(); ?>
    
    		</div>
    
    	</div>
    
    	<?php
    
    	/**
    	 * Fires before the display of the members list.
    	 *
    	 * @since 1.1.0
    	 */
    	do_action( 'bp_before_directory_members_list' ); ?>
    
    	<ul id="members-list" class="item-list" aria-live="assertive" aria-relevant="all">
    
    	<?php while ( bp_members() ) : bp_the_member(); ?>
    		<li <?php bp_member_class(); ?>>
            
    			<div class="item-avatar">
    				<a href="<?php bp_member_permalink(); ?>"><?php bp_member_avatar(); ?></a>
    			</div>
    
    			<div class="item">
    				<div class="item-title">
    					<a href="<?php bp_member_permalink(); ?>"><?php bp_member_name(); ?></a>
    
    					<?php if ( bp_get_member_latest_update() ) : ?>
    
    						<span class="update"> <?php bp_member_latest_update(); ?></span>
    
    					<?php endif; ?>
    
    				</div>
    
    				<div class="item-meta"><span class="activity" data-livestamp="<?php bp_core_iso8601_date( bp_get_member_last_active( array( 'relative' => false ) ) ); ?>"><?php bp_member_last_active(); ?></span></div>
    
    				<?php
    
    				/**
    				 * Fires inside the display of a directory member item.
    				 *
    				 * @since 1.1.0
    				 */
    				do_action( 'bp_directory_members_item' ); ?>
    
    				<?php
    				 /***
    				  * If you want to show specific profile fields here you can,
    				  * but it'll add an extra query for each member in the loop
    				  * (only one regardless of the number of fields you show):
    				  *
    				  * $xGender =  bp_member_profile_data( 'field=Gender' );
    				  */
    				  
    				?>
    			</div>
    
    			<div class="action">
    
    				<?php
    
    				/**
    				 * Fires inside the members action HTML markup to display actions.
    				 *
    				 * @since 1.1.0
    				 */
    				do_action( 'bp_directory_members_actions' ); ?>
    
    			</div>
    
    			<div class="clear"></div>
    		</li>
    	<?php endwhile; ?>
    
    	</ul>
    
    	<?php
    
    	/**
    	 * Fires after the display of the members list.
    	 *
    	 * @since 1.1.0
    	 */
    	do_action( 'bp_after_directory_members_list' ); ?>
    
    	<?php bp_member_hidden_fields(); ?>
    
    	<div id="pag-bottom" class="pagination">
    
    		<div class="pag-count" id="member-dir-count-bottom">
    
    			<?php //bp_members_pagination_count(); ?>
    
    		</div>
    
    		<div class="pagination-links" id="member-dir-pag-bottom">
    
    			<?php bp_members_pagination_links(); ?>
    
    		</div>
    
    	</div>
    
    <?php else: ?>
    
    	<div id="message" class="info">
    		<p><?php _e( "Sorry, no members were found.", 'buddypress' ); ?></p>
    	</div>
    
    <?php endif; ?>
    
    <?php
    
    /**
     * Fires after the display of the members loop.
     *
     * @since 1.2.0
     */
    do_action( 'bp_after_members_loop' );

    [index-2.php]
    ‘<?php
    /**
    * BuddyPress – Members
    *
    * @package BuddyPress
    * @subpackage bp-legacy
    */

    /**
    * Fires at the top of the members directory template file.
    *
    * @since 1.5.0
    */
    do_action( ‘bp_before_directory_members_page’ ); ?>

    <div id=”buddypress”>

    <?php

    /**
    * Fires before the display of the members.
    *
    * @since 1.1.0
    */
    do_action( ‘bp_before_directory_members’ ); ?>

    <?php

    /**
    * Fires before the display of the members content.
    *
    * @since 1.1.0
    */
    do_action( ‘bp_before_directory_members_content’ ); ?>

    <?php /* Backward compatibility for inline search form. Use template part instead. */ ?>
    <?php if ( has_filter( ‘bp_directory_members_search_form’ ) ) : ?>

    <div id=”members-dir-search” class=”dir-search” role=”search”>
    <?php bp_directory_members_search_form(); ?>
    </div><!– #members-dir-search –>

    <?php else: ?>

    <?php bp_get_template_part( ‘common/search/dir-search-form’ ); ?>

    <?php endif; ?>

    <?php
    /**
    * Fires before the display of the members list tabs.
    *
    * @since 1.8.0
    */
    do_action( ‘bp_before_directory_members_tabs’ ); ?>

    <form action=”” method=”post” id=”members-directory-form” class=”dir-form”>

    <div class=”item-list-tabs” id=”subnav” aria-label=”<?php esc_attr_e( ‘Members directory secondary navigation’, ‘buddypress’ ); ?>” role=”navigation”>

      <?php

      /**
      * Fires inside the members directory member sub-types.
      *
      * @since 1.5.0
      */
      do_action( ‘bp_members_directory_member_sub_types’ ); ?>

      <li id=”members-order-select” class=”last filter”>
      <label for=”members-order-by”><?php _e( ‘Order By:’, ‘buddypress’ ); ?></label>
      <select id=”members-order-by”>
      <option value=”active”><?php _e( ‘Last Active’, ‘buddypress’ ); ?></option>
      <option value=”newest”><?php _e( ‘Newest Registered’, ‘buddypress’ ); ?></option>

      <?php if ( bp_is_active( ‘xprofile’ ) ) : ?>
      <option value=”alphabetical”><?php _e( ‘Alphabetical’, ‘buddypress’ ); ?></option>
      <?php endif; ?>

      <?php

      /**
      * Fires inside the members directory member order options.
      *
      * @since 1.2.0
      */
      do_action( ‘bp_members_directory_order_options’ ); ?>
      </select>

    </div>

    <h2 class=”bp-screen-reader-text”><?php
    /* translators: accessibility text */
    _e( ‘Members directory’, ‘buddypress’ );
    ?></h2>

    <div id=”members-dir-list” class=”members dir-list”>
    <?php bp_get_template_part( ‘members/members-loop-2’ ); ?>
    </div><!– #members-dir-list –>

    <?php

    /**
    * Fires and displays the members content.
    *
    * @since 1.1.0
    */
    do_action( ‘bp_directory_members_content’ ); ?>

    <?php wp_nonce_field( ‘directory_members’, ‘_wpnonce-member-filter’ ); ?>

    <?php

    /**
    * Fires after the display of the members content.
    *
    * @since 1.1.0
    */
    do_action( ‘bp_after_directory_members_content’ ); ?>

    </form><!– #members-directory-form –>

    <?php

    /**
    * Fires after the display of the members.
    *
    * @since 1.1.0
    */
    do_action( ‘bp_after_directory_members’ ); ?>

    </div><!– #buddypress –>

    <?php

    /**
    * Fires at the bottom of the members directory template file.
    *
    * @since 1.5.0
    */
    do_action( ‘bp_after_directory_members_page’ );

    kwavewd
    Participant

    I am using Buddypress and the BuddyBoss theme. I have 2 user types contributors and subscribers I made using BP Member Types and user profile fields. Everything is working except.

    When a contributor is logged in and goes to a tab say members/username/messages the subnav tabs show perfectly little grey boxes next to each other.

    But…

    when a subscriber goes to a tab say members/username/messages the css for the subnav tabs does not show as if it’s not pulling the css. I check and the file that controls this css section is buddyboss/css/buddypress-main.min.css and I checked this file is being used in the source code of this page. So for some reason the subscriber account is not pulling this style sheet even though it’s shown as included in the source. I tried to hard code the entire css into my page and it still didn’t show.

    the other thing I noticed was the code for the nav section was setup like this for contributor

    <div id=”buddypress”>
    <div id=”item-header” role=”complementary”>
    <div id=”item-nav”>
    <div id=”item-body”>

    but the subscriber one only shows like this

    <div id=”buddypress”>
    <div id=”item-nav”>
    <div id=”item-body”>

    why would the section <div id=”item-header” role=”complementary”> not be showing for subscribers? Could this be my problem

    Anyone have any ideas?

    amandafrench
    Participant

    Never mind! I’ve found a fabulous solution that has gotten me out of SQL query hell. Again, if anyone else is trying to sort a Members Directory, here’s what I did:

    1) Put it in a table, not a list (I had done this anyway, since I wanted a single-page directory that displayed xprofile fields horizontally) — make sure it has a <th> table header row;
    2) Install the plugin Table Sorter https://wordpress.org/plugins/table-sorter/ and add the class “tablesorter” to the table.

    Et voilĂ ! I commented out the sort type dropdown in members/index.php starting with
    <div class="item-list-tabs" id="subnav" aria-label="<?php esc_attr_e( 'Members directory secondary navigation', 'buddypress' ); ?>" role="navigation">
    all the way through

    <?php
    /**
     * Fires inside the members directory member order options.
     *
     * @since 1.2.0
     */
    do_action( 'bp_members_directory_order_options' ); ?>
    </select>
    </li>
    </ul>
    </div>

    and I made sure that the default single page list showed all users alphabetically by default in members-loop.php

    <?php if ( bp_get_current_member_type() ) : ?>
    	<p class="current-member-type"><?php bp_current_member_type_message() ?></p>
    <?php endif; ?>
    
    <?php if ( bp_has_members( bp_ajax_querystring( 'members' ) . '&per_page=500' . '&exclude=1,2,3,4,6' . '&type=alphabetical') ) : ?>

    And then all I had to do was add that tablesorter class to the table as required by the tablesorter plugin, and I got a nice dynamic table with sortable columns, which can also be sorted by multiple criteria by holding down the Shift key on the second column. I set the initial sort order with parameters that select the column by number, as described at http://tablesorter.com/docs/example-option-sort-list.html and elsewhere.

    <table id="members-list" class="tablesorter {sortlist:[[4,0], [3,0], [2,0], [1,0], [0,0]]}" aria-live="assertive" aria-relevant="all">

    Yay.

    #270258
    keshabee
    Participant

    2)I wanted to ask if there was a function code that could print a word such as Website associate to display beside, users profile photo in the profile page when given a certain role.

    3) Finally wanted to ask if it was possible to have a function where a green light dot is placed at side of a user profile page when the user is logged in, an example is
    https://postimg.org/image/ym0tuaoy3/
    as presently its grey there because the user is offline.

    Thanks you

    #269412
    bcanr2d2
    Participant

    I am using WP Mail SMTP to get the mail to send without issues. But it seems to affect this particular email only, I am getting everything else as far as I am aware.

    Here are my current active plugins – There is quite a long list.
    I do use Autoptimize, so not sure if it’s affecting anything.
    One of note, is Social Login, which when logging directs to their site, and redirects back to my site to log the user in via their social network, this is where it falls over and does not send this one email. It manages to send other emails related to the login, but it now gives me an idea to look into the code that sends this social email sign up notification.

    (BuddyDev) BP Auto Login on Activation (1.0.3)
    Advanced Custom Fields (4.4.11)
    Allow Multiple Accounts (3.0.4)
    Autoptimize (2.2.2)
    BP Profile Message UX Free (1.5)
    BP xProfile Location (1.2)
    BP XProfile WordPress User Sync (0.6.4)
    BuddyDev Username Availability Checker (1.1.1)
    BuddyExtender (1.0.1)
    BuddyPress (2.7.4)
    BuddyPress Member Type Generator (1.0.3)
    BuddyPress Security Check (2.1.2)
    BuddyPress Simple Terms And Conditions (1.3)
    BuddyPress Xprofile Custom Fields Type (2.6.3)
    BuddyPress Xprofile Member Type Field (1.0.4)
    BuddyPress XProfile Validate with RegEx (0.1.2)
    Cherry Parallax Plugin (1.1.0)
    Cherry Plugin (1.2.8.1)
    Child Theme Configurator (2.1.2)
    Conditional Profile Fields for BuddyPress (1.1.9)
    Contact Form 7 (4.6)
    Contact Form 7 – Dynamic Text Extension (2.0.1)
    Contact Form 7 Conditional Fields (1.0)
    Contact Form 7 Get and Show Parameter from URL (0.9.7)
    Contact Form 7 Honeypot (1.10)
    Contact Form 7 Modules: Hidden Fields (2.0)
    Contact Form 7 Shortcode Enabler (1.1)
    Custom Hooks (1.0)
    Custom Post Template By Templatic (1.0)
    Custom Post Type UI (1.4.3)
    Disable Comments (1.6)
    Display Posts Shortcode (2.7.0)
    FacetWP (2.7.4)
    FacetWP – Map (1.0.5)
    Flamingo (1.5)
    GeoIP Detection (2.7.0)
    GEO my WP (2.7)
    Google Analytics Dashboard for WP (4.9.6.2)
    List Plugins (1.4.4)
    Meta Slider (3.4)
    Optimize Database after Deleting Revisions (4.2.1)
    Page-list (5.1)
    PHP Compatibility Checker (1.4.0)
    Popup Maker (1.4.20)
    Shortcodes in Menus (3.2)
    Social Login (5.2)
    Stream (3.2.0)
    String Locator (2.2.0)
    Sucuri Security – Auditing, Malware Scanner and Hardening (1.8.3)
    SuitePlugins – Advanced XProfile Fields for BuddyPress (1.0.3)
    Theme Check (20160523.1)
    Visual Builder for Contact Form 7 (2.0)
    WPFront User Role Editor (2.13)
    WP Mail SMTP (0.11.1)
    WP Private Content Plus (1.13.1)
    WP Smush (2.6.1)
    Yoast SEO (4.3)

    #264536
    adamt89
    Participant

    On some forums and social networks, you will see a badge or for example Admin next to the username of the member of the network that is an admin, or MOD next to their name if they are a moderator.

    Do you know how we can display roles in WordPress next to usernames, use a badge or image, or know of a plugin that can accomplish custom roles or tags for staff members within buddy press?

    #261682
    sweeneytodd94
    Participant

    (Latest version of WP/BP; non-bundled custom theme, using child theme.)

    When adding a custom index & members-loop to /members/ in my child-theme, to make some adjustments to the members directory layout, individual profile pages break completely, I think defaulting to the pages.php but loaded without any content.

    childtheme/members/members-loop.php

    <?php 
    //global $members_template;
    //$reset_members_template = $members_template;
    
    do_action( 'bp_before_members_loop' ); ?>
    
    <?php if ( bp_has_members( bp_ajax_querystring( 'members' ) . '&per_page=21&type=alphabetical' ) ) : ?>
    
    	<div id="pag-top" class="pagination">
    		<div class="pag-count" id="member-dir-count-top"><?php bp_members_pagination_count(); ?></div>
    		<div class="pagination-links" id="member-dir-pag-top"><?php bp_members_pagination_links(); ?></div>
    	</div>
    
    	<?php do_action( 'bp_before_directory_members_list' ); ?>
    
    	<ul id="members-list" class="item-list" role="main">
    
    	<?php while ( bp_members() ) : bp_the_member(); ?>
    
    		<li>
    			<div class="item-avatar">
    				<a href="<?php bp_member_permalink(); ?>"><?php bp_member_avatar('type=full&width=80&height=80'); ?></a>
    			</div>
    			<div class="item">
    				<div class="item-title"><a href="<?php bp_member_permalink(); ?>"><?php bp_member_name(); ?></a></div>
    				<div class="item-meta"><span class="activity"><?php bp_member_last_active(); ?></span></div>
    				<?php do_action( 'bp_directory_members_item' ); ?>
    			</div>
    			<div class="action">
    				<?php do_action( 'bp_directory_members_actions' ); ?>
    			</div>
    			<div class="clear"></div>
    		</li>
    
    	<?php endwhile; ?>
    
    	</ul>
    
    	<?php do_action( 'bp_after_directory_members_list' ); ?>
    
    	<?php bp_member_hidden_fields(); ?>
    
    	<div id="pag-bottom" class="pagination">
    		<div class="pag-count" id="member-dir-count-bottom"><?php bp_members_pagination_count(); ?></div>
    		<div class="pagination-links" id="member-dir-pag-bottom"><?php bp_members_pagination_links(); ?></div>
    	</div>
    
    <?php else: ?>
    	<div id="message" class="info"><p><?php _e( "Sorry, no members were found.", 'buddypress' ); ?></p></div>
    <?php endif; 
    
    //$members_template = $reset_members_template;
    ?>
    
    <?php do_action( 'bp_after_members_loop' ); ?>

    childtheme/members/index.php

    <?php
    
    /**
     * BuddyPress - Members Directory
     *
     * @package BuddyPress
     * @subpackage bp-default - SSSMG
     */
    
    get_header( 'buddypress' ); ?>
    
    	<?php do_action( 'bp_before_directory_members_page' ); ?>
    
    <div class="container">
    <div class="row">
    <div id="primary" class="col-md-10">
    
    	<div id="content" role="main" class="<?php do_action( 'content_class' ); ?>">
    		<div class="padder">
    		<div class="buddypress">
    
    		<?php do_action( 'bp_before_directory_members' ); ?>
    		
    	<form action="" method="post" id="members-directory-form" class="dir-form">
    	
    	<?php do_action( 'bp_before_directory_members_content' ); ?>
    
    	<div id="members-dir-search" class="dir-search" role="search">
    		<?php bp_directory_members_search_form(); ?>
    	</div><!-- #members-dir-search -->
    
    	<?php do_action( 'bp_before_directory_members_tabs' ); ?>
    
    		<div class="item-list-tabs" role="navigation">
    			<ul>
    				<li class="selected" id="members-all"><a href="<?php bp_members_directory_permalink(); ?>"><?php printf( __( 'All Members %s', 'buddypress' ), '<span>' . bp_core_get_total_member_count() . '</span>' ); ?></a></li>
    
    				<?php if ( is_user_logged_in() && bp_is_active( 'friends' ) && bp_get_total_friend_count( bp_loggedin_user_id() ) ) : ?>
    					<li id="members-personal"><a href="<?php echo bp_loggedin_user_domain() . bp_get_friends_slug() . '/my-friends/'; ?>"><?php printf( __( 'My Friends %s', 'buddypress' ), '<span>' . bp_get_total_friend_count( bp_loggedin_user_id() ) . '</span>' ); ?></a></li>
    				<?php endif; ?>
    
    				<?php do_action( 'bp_members_directory_member_types' ); ?>
    
    			</ul>
    		</div><!-- .item-list-tabs -->
    
    		<div id="members-dir-list" class="members dir-list">
    			<?php //bp_get_template_part( 'members/members-loop' );
    				locate_template( array( 'members/members-loop.php' ), true );
    			?>
    		</div><!-- #members-dir-list -->
    
    		<?php do_action( 'bp_directory_members_content' ); ?>
    
    		<?php wp_nonce_field( 'directory_members', '_wpnonce-member-filter' ); ?>
    
    		<?php do_action( 'bp_after_directory_members_content' ); ?>
    
    	</form><!-- #members-directory-form -->
    
    	<?php do_action( 'bp_after_directory_members' ); ?>
    
    </div><!-- #buddypress -->
    </div><!-- .padder -->
    	</div><!-- #content -->
    
    </div><!-- primary -->
    <?php get_sidebar( 'buddypress' ); ?>
    </div><!-- row -->
    </div><!-- container -->
    
    	<?php do_action( 'bp_after_directory_members_page' ); ?>
    
    <?php get_footer( 'buddypress' ); ?>

    bp-custom.php

    <?php
    // bp-custom.php - BP hacks and mods will go here
    /**
     * Include bbPress 'topic' custom post type in WordPress' search results */
     
    function ntwb_bbp_topic_cpt_search( $topic_search ) {
    	$topic_search['exclude_from_search'] = false;
    	return $topic_search;
    }
    add_filter( 'bbp_register_topic_post_type', 'ntwb_bbp_topic_cpt_search' );
    
    /**
     * Include bbPress 'forum' custom post type in WordPress' search results */
    
    function ntwb_bbp_forum_cpt_search( $forum_search ) {
    	$forum_search['exclude_from_search'] = false;
    	return $forum_search;
    }
    add_filter( 'bbp_register_forum_post_type', 'ntwb_bbp_forum_cpt_search' );
    
    /**
     * Include bbPress 'reply' custom post type in WordPress' search results  */
    
    function ntwb_bbp_reply_cpt_search( $reply_search ) {
    	$reply_search['exclude_from_search'] = false;
    	return $reply_search;
    }
    add_filter( 'bbp_register_reply_post_type', 'ntwb_bbp_reply_cpt_search' );
    
    /**
     * Ensure that multiselect boxes have trailing brackets in their 'id' and 'name' attributes.
     *
     * These brackets are required for an array of values to be sent in the POST
     * request. Previously, bp_get_the_profile_field_input_name() contained the
     * necessary logic, but since BP 2.0 that logic has been moved into
     * BP_XProfile_Field_Type_Multiselectbox. Since bp-default does not use the
     * BP_XProfile_Field_Type classes to build its markup, it did not inherit
     * the brackets from their new location. Thus this workaround.
     */
    function bp_dtheme_add_brackets_to_multiselectbox_attributes( $name ) {
    	global $field;
    
    	if ( 'multiselectbox' === $field->type ) {
    		$name .= '[]';
    	}
    
    	return $name;
    }
    add_filter( 'bp_get_the_profile_field_input_name', 'bp_dtheme_add_brackets_to_multiselectbox_attributes' );
    
    // add the custom column headers to BP manage signups
    function philopress_modify_user_columns($column_headers) {
            $column_headers['extended'] = 'Extended';
            return $column_headers;
    }
    add_action('manage_users_page_bp-signups_columns','philopress_modify_user_columns');
    
    // dump all the pending user's meta data in the custom column
    function philopress_signup_custom_column( $str, $column_name, $signup_object ) {
    	if ( $column_name == 'extended' ) 
                 return print_r( $signup_object->meta, true );
            return $str;
    }
    add_filter( 'bp_members_signup_custom_column', 'philopress_signup_custom_column', 1, 3 );
    
    //* Redirect WordPress Logout to Home Page
    add_action('wp_logout',create_function('','wp_redirect(home_url());exit();'));
    
    //add @mentions to bbpress forum
    function custom_bbpress_maybe_load_mentions_scripts( $retval = false ) {
    	if ( function_exists( 'bbpress' ) && is_bbpress() ) {
    		$retval = true;
    	}
    	return $retval;
    }
    add_filter( 'bp_activity_maybe_load_mentions_scripts', 'custom_bbpress_maybe_load_mentions_scripts' );
    
    function bphelp_dpioml(){
    	$bphelp_my_profile_field_1='Profession';
    	$bphelp_my_profile_field_2='Primary Institution';
           if( is_user_logged_in() && bp_is_members_component() ) { ?>
            <div class="bph_xprofile_fields">
                              <?php if(bphelp_my_profile_field_1<>"") echo bp_member_profile_data( 'field='.$bphelp_my_profile_field_1 );  ?><br />
    						  <?php if(bphelp_my_profile_field_2<>"") echo bp_member_profile_data( 'field='.$bphelp_my_profile_field_2 );  ?><br />
                    </div><?php
           }
    }
    add_action('bp_directory_members_item', 'bphelp_dpioml');
    
    ?>

    I’ve tried all sorts of different combinations but whatever I do, the only way to get both the profile pages and the members directory to display is to remove the index and members-loop customizations. Then everything works fine, but without the adjustments to the members directory that I want (removing recent updates, for instance). Any pointers would be brilliant!

    #253789

    In reply to: Profile Tabs

    nnyorker
    Participant

    Hi Dan –
    Thank you for your reply. I have tried this plugin, but there is a conflict with the edit profile page where all the Field User groups are displayed instead of only the role that the user has registered for. I have not had any luck getting it resolved. The view page is fine. I just don’t want students when they edit their profile to see all the other tabs that are only specific to Teachers, Coaches, Parents.
    Thanks again.

    #246705
    scoobs2000
    Participant

    Hi
    in short everything you have asked can be done.

    But I’m a little bias as I honestly believe regarding technology there is nothing that can’t be achieved it just comes down to how much time and budget you have to invest… 🙂

    Below is a bit of a ramble…. But might provide insight. after you organize your coffee and come back.

    I have nearly completed a project that sounds similar in nature (few weeks from launch in final beta testing), however it was a highly customised solution (private membership site) .
    With nearly 70 plugins, 100’s hours coding integration code (lots of trial and error) between the plugins and also compatibility tests with multiples of plugins to ensure no issues, because of slow load times the project requires deploying from CDN,fast servers and customised caching solutions.
    most of work load appeasr to be bbpress – so an near out of the box solution, you prob don’t need to go that far.

    But not to scare you. Here are some pointers that might answer your questions, based on my understanding of the OP.

    In my case I spent many months researching solutions with many platforms (open source / paid / managed premium) – buddy press was selected simply because is built on WordPress that’s already has the core abilities you need, you just need to “hook in to’em” and take advantage of this concept – you can keep working on bettering and adding separate components / features as time goes by, great for client, works out a bit cheaper in the startup phase and great for developer – land ya self a permanent support / ongoing development contract……

    Is it possible to update profile content/meta? : In general yes, buddy press allows this out of the box

    Either the user or the admin can update, you can have admin only fields (the user doesn’t access them – but the admin can)
    if you use a membership plugin eg, s2member – you can extend this idea much further eg, only require email on signup, then all other fields are accessible from profile and can set fields on a per membership level,

    In your case, you might have different profile fields for students, teachers, Parents and only require a couple of basic fields to be completed on signup and all other fields can still be “required” when they reach their profile page.
    For profile field management I recommend the s2membership pro plugin (free version available) http://s2member.com/

    My project has a “todo list” for each and every member – however I’m still to this day unable to find a plugin that interacts with a completed wp/bbp/buddypress site. So I had to code one. The todo list was designed / engineered in a way that interacts with “wordpress” in general, by storing a completely unique data feed much like the activity feed with time stamps and can be programmed to be linked to any site link, media download, page view, forum post, reply any activity on the site can be logged and applied to the feed which the to-do-list interacts with and auto completing (crossing of the item) each item also has dependencies, so you rattle off a list of activities before the task is crossed off and each to-do-list also has dependencies so it is not seen by a user until certain tasks are completed, eg, purchase a course from the store, or complete a previous to-do-list.

    In short: Yes it can be done, however I’m not aware of any 3rd party plugin that does this successfully.

    In my case I have the to-do-list shown in the sidebar so as a member goes through the tasks the list is also available to them no matter what page they are on. But possible to publish it in the profile page if required.

    Regarding email notices, I recommend looking into the woo commerce sensei http://www.woothemes.com/products/sensei/ plugin for your courses that way you have management of email notices, in fact prob most of the things you require will be available via sensei – note this is a premium paid plugin with yearly ongoing licence costs.
    Without a free trial version to try before you buy.

    But maybe gravity forms developer licence might be fine in your case as it has, gateway plugins, qiz and survey plugins – it would be possible to build certain simple courses on the gravity framework including delivery of custom emails – if building a form based system than certainly worth a look into – but would require a developers licence to get all the plugins you would prob require.

    In fact what I do is use gravity forms email chimp plugin to send the members email address to an email list (automation campaign) in mail chimp (paid account) that auto sends a welcome emails that I have customize to suit the activity they have completed, this way I can send pretty html + marketing emails + scheduled follow up emails and take the work load off WordPress other than a quick API connect on demand.

    Regarding: is it possible to have multiple logins or users access the same account/profile?
    In simple: Yes, but it all comes to context of the profile, will each member be able to see other members profiles or will parents be able to edit a child profile etc.

    Although my project does not require the need for 2 or more members to edit a single profile, I do have multiple levels of context (horizontal and vertical memberships) all with their own set of rules who profiles they can see and what buddypress features are available to them – some members don’t have activity feeds or messages, But I needed to ensure that members that do have access to these features can’t access the features of cross membership and so on.

    This is 100% custom code (no plugin) but while coding this up I recall thinking I’m 100% confident it is possible to add another level of check “if current user can edit displayed user” and go from there, all you would need is a profile field / meta that links multiple accounts together –
    Eg, a parent account has a profiled field “child user name” – they just enter the child username / user ID – and now we would add the profile check if a parent is viewing the child’s profile.

    Regarding paying a deposit, and payment, this is my findings.

    There was no single one membership / payment plugin that integrated perfectly into what I wished to achieve – I have tested many. please note I’m suggesting there are no plugins that do this stuff just none that achieved the outcomes I needed for my project.

    – Tips: – start the project design based on the payment systems / gateway (the complete project and direction of development is 100% dependent on this) because the simple reason every feature you implement needs to check “is a paid member and what level (cap / role) ” – including free membership with paid features “is not a paid member” but has paid for… this includes recurring and non-recurring subscriptions with consideration of what you intend to do if a subscription expires.

    Eg, a recurring subscription will either just auto subscribe and pay for the next time frame (or fail)
    A non-reoccurring subscription will auto expire after a given time frame (or X cycles)

    The difference between to the two –
    Is generally on a recurring subscription when it expires it also linked to a member account to “do something” eg downgrade membership

    A non-recurring subscription is generally used for a onetime payment you have access forever feature- eg, a course and resources, you pay once on a deposit, subscription over several weeks when the subscription expires the member still has access to the course as long as they remain at minimum a free member on the site. (anyhow that’s how I have implemented things)

    These two concepts are completely different in the way they interact with the member as well at many levels although on the surface appear to be almost the same, add in a deposit feature you are also opening another level of context to play with, mostly limiting the available options regarding the payment gateway service you will need to use or more so which services have this feature on offer.

    As mentioned – my suggestion is start with the gateway solutions first and reverse the design back to the front end. – this is the big lesson I took away with this project (4 rewrites in total) as it was always a block relating to the gateway limitations (and laws relating to online subscriptions in my country).

    My project:
    Woo commerce (free) for shopping cart system including purchase of courses, subscription to site and deposit/ subscription to courses, plus all other products, deliverable products, workshops, webinars, one on one sessions, resource downloads from pdf to videos. Anything you can think off can be sold through woo

    Woo commerce quick cart – plugin (paid)– now I can add a buy now button on any page for any product including subscriptions – the membership info page has a standard 3 column price comparison chart with nothing more than a “sign up now” button – clicking the button auto adds the subscription to cart and opens the checkout popup with one click and without leaving the page (no need to send to store)

    Sensei (paid)– for courses and fits well into woo commerce system (but requires a couple more plugins and custom integration code if implementing paid / subscription based courses )

    Groups plugin (free) to easily manage roles and caps (as I have to teach client staff how to do this and manage the site) WordPress has this capability built in if your a coding ninja (I’m not)

    Groups Woo commerce (paid plugin) to link groups to a purchase – apply a role / cap or groups of, to a user based on the purchase.

    Then some custom code is required – to perform a check and if a user has a particular role or cap than apply the s2membership level – this check is done at the store level so if a member cancels or defaults on a payment – the membership level is auto adjusted depending on what role or cap is supplied to the user from the groups woo commerce automation. groups plugin manages non-recurring subscriptions so a expired subscription does not remove the users caps and roles (but a default on payment does)

    S2member pro – for membership level management including profile fields management and most importantly complete site access management – I can apply access to each and every competent of the site this includes , forums, topics, replies, posts, pages, media, courses, and content within pages eg, home page displays different content based on the membership level / logged in or general public. s2member pro is also used to override default bbpress / buddy visibility settings eg, hidden forums only available to certain member levels – but requires custom code to apply or traverse access levels on submitting topics / replies to ensure widgets and other snippets don’t display private areas to members that don’t have access. (it allows you to write custom queries with zero concern or consideration to access levels)

    For subscriptions (paid)– I use woo commerce Subscriptions plugin – this manages on its own site access based on paid recurring subscriptions (or in simple turns on or off user account based on payment) – pay x amount monthly to access certain site features, courses and resources, forums, pages, blog articles etc.

    However – woo commerce subscriptions does not manage deposit / time based subscriptions (non-recurring subscriptions) eg, pay a deposit for a course and gain instant access then pay off on a subscription for x amount of weeks / months –
    I was not able to find any plugin (free or paid) that does this, so I had to write a plugin currently under experimental concept stage.

    Other tips: often it’s better to find compatible, well supported and pay for premium plugins that have overlapping features and disengage these features you don’t want to achieve your goals and do as little integration code as possible, but anything you do needs to be well planned and though out as to not to touch core code in any platform, framework or plugin.
    At the end of the day you want the ability to upgrade all systems as time go by.

    Eg, s2member plugin has its build in membership system that is “required to be active” for the plugin to work. – all I did was setup a single paid (never to be used membership) on a paypal sandbox store this includes setting up all the s2membership registration pages etc – then put a simple redirect in the .htaccess on any of these pages. Now to purchase membership you must go to the store (woo commerce) and purchase a subscription via woo – s2member has now has nothing to do with membership registration / payment systems.

    And of course I have “force account creation” turned on at the store – you cannot make a purchase without signup at a minimum free site membership.
    by disengaging the buddy, bbp, Wp, and all other means of registering (by redirect) but only leaving the woo commerce customer account registration available – The pop up registration form I use for free members is just a woocommerce customer account registration form (with no products attached) with a fallback to the s2membership cut down reg form (in case ajax / jquery etc not working on client side)

    And now all purchases, subscriptions, shop account, courses etc are now available from the buddy press profile page also via a “woo to buddypress” plugin (or in my case built into the theme)

    May sound complicated but as mentioned I would really suggest starting with payment solutions and nut out this part of the project first as this will most likely force development direction,

    one of my project goals was a solution that can cater for anything…. so,

    Regarding variable deposit / costs amounts based on user input – if using similar approach as I did – you would just setup woo commerce discount codes per variable outcome / result and would just reveal the correct coupon code to the user on the checkout page. they just cut and paste this code into the discount field and click apply.

    or setup up multi products – one product per price base. – have the user input their details first and the result would be – apply a groups cap / role then only offer the courses products in the store with the associated price base based on user caps / role –

    woo discount coupons can be setup on multiple bases – eg, deposit amount / on going subscription amount or total amount or per product or per cart total etc.

    for me was plenty of research into this including concept builds of other community platforms and as above is only a bit of a sample of features used relating to the OP.
    I was under very strict key point goals and achievements requiring very specific outcomes many of these affected development direction how / why I implemented the above.

    There may be better simpler ways to suit your specific project, but thought it might be worth a mention for some direction. or at least insight into some of the plugins I use / ideas and concepts.

    my usual disclaimer – if there is something in there for you, that’s great! if not that’s fine too!

    enjoy!

Viewing 25 results - 1 through 25 (of 47 total)
Skip to toolbar