Skip to:
Content
Pages
Categories
Search
Top
Bottom

Search Results for 'custom activity page'

Viewing 25 results - 226 through 250 (of 1,252 total)
  • Author
    Search Results
  • #259959
    livingflame
    Participant

    I know that Buddypress is a good growing project, but, needs very Important Native (by Default) features.

    1) Buddypress Block User (allow users to block other users –– really allow to hide your info, activities, etc. for a specific @user-1 e.g, auto-unfriend, no more messages from the blocked. This feature integrated with rtMedia too).
    OR FOR NOW: Buddypress Report User (with Custom Motives, p. ej. “@user-1 is sending me hateful messages”, “@user-2 published an annoying activity”). So, Admin can to impose a Sanction for @user-1, e. eg. 7 days without Post, 15 days without Sending Messages… or Community Expulsion -–> Block, Delete, Banned Email). Admin can too, to Sent a Message (previously edited for auto ms saying: @user-1 you are banned for…. 30 days. Sincerely the Admins).

    * Buddypress CONFIRM Account immediately after Sign Up.

    A Social or Community without this Function is Nothing. PLEASE!!

    2) Buddypress Chat (too, Message Template, to read Messages in a specific page).

    3) Buddypress Message with Attachments.

    4) Buddypress Global Search.

    5) Buddypress Custom Menu with Account Alerts (e. g. https://goo.gl/reojsE ). Yes. I know, if you go to WP Menus, you can add to your Navbar or Menu – Profile, Activity, Notifications, etc. BUT WITHOUT Bubbles or Account Alerts… That is very very Impractical.

    6) Buddypress Media (yes I know, we have rtMedia, but its add-ons are very expensive. The complete pack = US$500 more or less).

    7) Buddypress Follow/er Native.

    8) Buddypress Share (from activity).

    9) Buddypress Autocomplete Fields (for a specific text area, e. g. City: New York, Fruits: Apple, etc.), Range Fields (e. g. I’m searching friends from 20 to 21). Buddypress Birthdate normal, but, with an option to show only the Age! 10) Buddypress Advance Search. With this you can create an advance Form with Fields for Show on Members Page or in a Widget.

    11) Buddypress with Ads Area (inside Activity, Groups, Members and Forums). (Optional from Buddypress Option Panel)

    12) Buddypress More Customizable. >> A button over Cover Profile for Easy Photo Change (yes, like Facebook has)… The CPanel with MORE Options… MORE Options for: Profile / Settings / Profile Visibility and PRIVACY!!

    For now is all. Thanks!

    @johnjamesjacoby
    @djpaul
    @boonebgorges
    @imath
    @mercime
    @hnla
    @tw2113

    wolfpup64
    Participant

    I posted up on this a little while ago, and danbp was a boss and helped me out, and I thought I could get it to work, but the end fix ended up unfortunately not really fixing the problem.

    I’m having difficulty with a profile tab that is supposed to link to a separate forums profile (wpForo) via a dynamic link that recognizes the displayed user’s page. danbp set me up with something like the below, I changed a bit to make it work better…

    function tab_custom_link_to_page() {
    
    	if ( bp_is_page( 'BP_MEMBERS' ) ||  bp_is_activity_component() || bp_is_profile_component () || bp_is_groups_component () || bp_is_notifications_component () || bp_is_messages_component () || bp_is_settings_component () || bp_is_following_component () || bp_is_followers_component () ) {
    		
    		$link = bp_get_root_domain() . '/community/profile/'. bp_get_displayed_user_username();
    		echo '<li><a href="'. $link .'">Community</a></li>'; 
    	}  
    }
    add_action( 'bp_member_options_nav', 'tab_custom_link_to_page', 10 );

    but I couldnt change the location of the tab, using code or BuddyBoss Reorder Tabs plugin, which is an issue because the theme I’m using (BuddyBoss Boss.) hides the tabs at the end under a clickable “…”. I spoke to someone at BuddyBoss and they told me I wouldn’t be able to move the tab unless it was registered as a “bp_core_new_nav_item( array(“, which requires an array like:

    function add_communityprofile_tab() {
    	global $bp;	
    	bp_core_new_nav_item( array(
    		'name'                  => 'Community',
    		'slug'                  => 'community',
    		'parent_url'            => $bp->displayed_user->domain,
    		'parent_slug'           => $bp->profile->slug,		
    		'position'              => 200,
    		'default_subnav_slug'   => 'community'
    	) );
    }
    add_action( 'bp_setup_nav', 'add_communityprofile_tab', 100 );

    which works fine until I have to link it, apparently I can’t use the tab array/slug thing to reach a dynamic link without the same “$bp->displayed_user->domain”. The link I’m trying to reach is currently at:

    http://localhost/wordpress/community/profile/*displayeduser*/

    from:

    http://localhost/wordpress/users/*displayeduser*/

    If nobody has any helpful suggestions otherwise, I’m thinking the best route might be to have the page

    http://localhost/wordpress/users/*displayeduser*/community/

    redirect to

    http://localhost/wordpress/community/profile/*displayeduser*/

    via a dynamic redirect…I’m trying to figure out how to do that.

    If anyone has any helpful advice it would be super appreciated. My boss wants me to take the site live this week and I think I’m just about there…aside from this huge disconnect between the two separate user profiles…not too bad for someone who has barely any idea what they’re doing. but yeah, sorry for the super long post. thanks for reading and hopefully you can throw me a line.

    – Andrew

    #259891

    In reply to: Please, Help Me!

    Venutius
    Moderator

    If you go to Customize>>menus you will see there are buddyPress pages there you can add to menus, but these are the user specific menu items i.e. My Activity etc. To add the global pages you just need to create a link to the page in question, i.e. http://www.yoursite.com/activity

    #259830
    notapplicable
    Participant

    WP ver 4.6.1
    BuddyPress ver 2.6.2

    Members, activity, profile, are all empty…. Register redirects to something that doesn’t exist, despite setting a known page in the dropdown. Attempted to redirect to known page, via bp-custom.php -this moved it to the page, but it rendered entirely blank. Attempted re-install of buddypress – somehow it claims there’s everything deleted but magically retains all settings when installed again – tried several themes, See mention of “bp template pack” plugin in forum that’d reset it all up, but unable to locate it as an installable plugin…

    #259693
    r083r7
    Participant

    I’m trying to edit BP theme and to figure out which files control what. Would appreciate if someone could go over a couple of basics:

    I’m looking in the folder: plugins/buddypress/bp-templates/bp-legacy/buddypress

    1) What does the /activity folder control?
    2) There’s another instance of activity related file in /members/single/activity.php
    what’s the difference?

    3) What’s the difference between
    plugins/buddypress/bp-templates/bp-legacy/ and
    plugins/buddypress/bp-templates/bp-themes/

    4) Which file controls the header? Where the cover photo and avatar image are displayed towards the top.

    5) I would like to add a custom BP page/tab. I’ve found instructions to add pages through the function.php file (located in my child-theme), is that the best way?

    staxracing
    Participant

    I have a problem with the Jetpack sharing buttons in combination with buddypress.
    Obviously they don’t make much sense there anyways, it’s not like I want to share my settings page or sth similar, so I am looking for a way to get rid of the sharing buttons on these pages.
    I tried hiding them via custom css, but with no success (I can either hide them globally or not at all, since I can’t find a post-id to use it only there). So I searched the web and found this code:

    function jptweak_remove_share() {
    	if ( bp_is_user_profile() ) {
    	    remove_filter( 'the_content', 'sharing_display',19 );
    	    remove_filter( 'the_excerpt', 'sharing_display',19 );
    	    if ( class_exists( 'Jetpack_Likes' ) ) {
    	        remove_filter( 'the_content', array( Jetpack_Likes::init(), 'post_likes' ), 30, 1 );
    	    }
    	}
    }
    add_action( 'loop_start', 'jptweak_remove_share' );

    This disabled the sharing buttons when viewing the user profile. I just wonder what to replace the “bp_is_user_profile()” with to get rid of the sharing buttons on the activity site, the user settings page etc.
    Hope you can help me. Thank you in advance

    #259541
    danbp
    Participant

    Ok, i misunderstood the whole… The initial question was:
    what I am trying to link to is
    http://localhost/wordpress/community/profile/<displayed_user>/

    Try this:

    function tab_custom_link_to_page() {
    
    	if ( bp_is_activity_component() || bp_is_page( BP_MEMBERS_SLUG ) ) {
    
    		// link to what you want		
    		$link = bp_get_root_domain() . '/community/profile/'. bp_get_displayed_user_username();
    		echo '<li><a href="'. $link .'">Community</a></li>'; 
    	}  
    }
    add_action( 'bp_member_options_nav', 'tab_custom_link_to_page' );
    mbfit
    Participant

    Hello posting this question again, hopefully all is well and I’m informative as much as I can be.

    WP 4.6.1
    bbpress 2.5.10
    buddypress 2.6.2
    rtmedia 4.1.6

    WP installed as directory in root, no sub-directory
    Tested with no plugins other then the ones listed above.
    Custom theme SweetDate
    No core files changed other than a landing page changed in wp-config.php
    which was this:

    /**
     * Change BuddyPress default Members landing tab.
     */
    define('BP_DEFAULT_COMPONENT', 'profile' );

    I use bluehost version that has an installed WP

    I’ve inquired this issue with the SweetDate Theme support forum and they told me to ask
    about it here.

    My site is not live yet.

    I hope that these two questions are at the right place.

    I just have 2 concerns:

    1. When creating a Group there is the option to post texts, pics, etc. If it is a long post and then it is submitted, the post comes with a ‘Read More’. When I click on it it opens up to a new page. From there if I hit the back button the post is gone. If I remove the Read More using:

    .activity-read-more {
        display: none !important;
    }

    then the text field is limited to about 30 words. Is there a way to remove the Read More and just have it as an open regular forum where there isn’t a need to expand or have it go to another page?
    I’ve shared images labeled GroupPost 1to4

    2. The other concern I have is in regards to uploading a Cover Photo for the User Group. If I post an intro text and it winds up being lengthy, the text expands the image. That seems odd. Wondered if this is how it is or on my end. Is there a way to have the text separate and not laid out on the Cover Photo? Would rather have the Cover Photo as a stand alone.
    I’ve added an image COVER-TEXT

    Thanks.

    I realize the photos are a little small.

    davidtuttle
    Participant

    Hi,

    I am using WP 4.6.1 in a network site, directory install using a Divi child theme. I have BuddyPress 2.6.2 with BuddyBlock, BuddyPress Cover Photo, BuddyPress Group Email Subscription and BuddyPress Group Tags. No bbPress.

    I would like to make all posts and comments in a group visible to anyone who joins the group. At the moment group members can only see the posts and comments of their friends.

    This implies that if a new member wants to see all the activity in a group, they have to send friend requests to everyone in the group.

    I believe this should be done in bp-custom.php with code something like the following. I don’t know if I should be using the ‘has_groups’ or ‘has_activites’ loop or some other loop. I confirmed that bp_is_group_single does target the page in question because I could change the per_page entries successfully.

    function make_all_group_comments_visible( $loop ) 
    {
     if ( bp_is_group_single() ) {
    		 $loop['??????'] = '????';
    	 }
      return $loop;
    }
    add_filter( 'bp_after_has_activities_parse_args','make_all_group_comments_visible');

    Thanks for any suggestions,

    David Tuttle

    #259214
    Antonio
    Participant

    If an admin of a group (not admin of the site), try to delete a own post from activity page of the group, it is succesfully deleted in ajax.

    But if he try to delete a post related to another user, then he is redirected to a page like this:
    http://www.example.com/activity/delete/699/?_wpnonce=d8a012dd00 that show a page 404 and the activity item is not deleted at all.

    I am using my custom theme, (I already tested with a standard theme and it works), I tried to debug the code but I can’t find nothiing different from the 2015 theme.

    Can you please let me know to understand why this happens?

    bikerwp000
    Participant
    <?php
    /**
     * Plugin Name:       BP Loop Filters
     * Plugin URI:        https://codex.buddypress.org/add-custom-filters-to-loops-and-enjoy-them-within-your-plugin
     * Description:       Plugin example to illustrate loop filters
     * Version:           1.0
     * Author:            imath
     * Author URI:        http://imathi.eu
     * License:           GPL-2.0+
     * License URI:       http://www.gnu.org/licenses/gpl-2.0.txt
     */
    
    // Exit if accessed directly
    if ( !defined( 'ABSPATH' ) ) exit;
    
    class BP_Loop_Filters {
    
    	/**
    	 * Constructor
    	 */
    	public function __construct() {
    		$this->setup_actions();
    		$this->setup_filters();
    	}
    
    	/**
    	 * Actions
    	 *
    	 * @uses bp_is_active()
    	 * @uses is_multisite()
    	 */
    	private function setup_actions() {
    		/**
    		 * Adds the random order to the select boxes of the Members, Groups and Blogs directory pages
    		 */
    		// Members component is core, so it will be available
    		add_action( 'bp_members_directory_order_options', array( $this, 'random_order' ) );
    
    		// You need to check Groups component is available
    		if ( bp_is_active( 'groups' ) ) {
    			add_action( 'bp_groups_directory_order_options',  array( $this, 'random_order' ) );
    		}
    
    		// You need to check WordPress config and that Blogs Component is available
    		if ( is_multisite() && bp_is_active( 'blogs' ) ) {
    			add_action( 'bp_blogs_directory_order_options',   array( $this, 'random_order' ) );
    		}
    
    		/**
    		 * Registers the Activity actions so that they are available in the Activity Administration Screen
    		 */
    		// You need to check Activity component is available
    		if ( bp_is_active( 'activity' ) ) {
    
    			add_action( 'bp_register_activity_actions', array( $this, 'register_activity_actions' ) );
    
    			// Adds a new filter into the select boxes of the Activity directory page,
    			// of group and member single items activity screens
    			add_action( 'bp_activity_filter_options',        array( $this, 'display_activity_actions' ) );
    			add_action( 'bp_member_activity_filter_options', array( $this, 'display_activity_actions' ) );
    
    			// You need to check Groups component is available
    			if ( bp_is_active( 'groups' ) ) {
    				add_action( 'bp_group_activity_filter_options', array( $this, 'display_activity_actions' ) );
    			}
    
    	        // You're going to output the favorite count after action buttons
    			add_action( 'bp_activity_entry_meta', array( $this, 'display_favorite_count' ) );
    		}
    
    	}
    
    	/**
    	 * Displays a new option in the Members/Groups & Blogs directories
    	 *
    	 * @return string html output
    	 */
    	public function random_order() {
    		?>
    		<option value="random"><?php _e( 'Random', 'buddypress' ); ?></option>
    		<?php
    	}
    
    	/**
    	 * Registering the Activity actions for your component
    	 *
    	 * The registered actions will also be available in Administration
    	 * screens
    	 *
    	 * @uses bp_activity_set_action()
    	 * @uses is_admin()
    	 */
    	public function register_activity_actions() {
    		/* arguments are :
    		- 'component_id', 'component_action_type' to use in {$wpdb->prefix}bp_activity database
    		- and 'caption' to display in the select boxes */
    		bp_activity_set_action( 'bp_plugin', 'bpplugin_action', __( 'BP Plugin Action' ) );
    
    		/* Activity Administration screen does not use bp_ajax_querystring
    		Moreover This action type is reordering instead of filtering so you will only
    		use it on front end */
    		if ( ! is_admin() ) {
    			bp_activity_set_action( 'bp_plugin', 'activity_mostfavs', __( 'Most Favorited' ) );
    		}
    	}
    
    	/**
    	 * Building an array to loop in from our display function
    	 *
    	 * Using bp_activity_get_types() will list all registered activity actions
    	 * but you need to get the ones for your plugin, and this particular function
    	 * directly returns an array of key => value. As you need to filter activity
    	 * with your component id, the global buddypress()->activity->actions will be
    	 * more helpful.
    	 *
    	 * @uses buddypress()
    	 * @return array the list of your plugin actions.
    	 */
    	private function list_actions() {
    
    		$bp_activity_actions = buddypress()->activity->actions;
    
    		$bp_plugin_actions = array();
    
    		if ( !empty( $bp_activity_actions->bp_plugin ) ) {
    			$bp_plugin_actions = array_values( (array) $bp_activity_actions->bp_plugin );
    		}
    
    		return $bp_plugin_actions;
    	}
    
    	/**
    	 * Displays new actions into the Activity select boxes
    	 * to filter activities
    	 * - Activity Directory
    	 * - Single Group and Member activity screens
    	 *
    	 * @return string html output
    	 */
    	public function display_activity_actions() {
    		$bp_plugin_actions = $this->list_actions();
    
    		if ( empty( $bp_plugin_actions ) ) {
    			return;
    		}
    
    		foreach ( $bp_plugin_actions as $type ):?>
    			<option value="<?php echo esc_attr( $type['key'] );?>"><?php echo esc_attr( $type['value'] ); ?></option>
    		<?php endforeach;
    	}
    
    	/**
    	 * Displays a mention to inform about the number of time the activity
    	 * was favorited.
    	 *
    	 * @global BP_Activity_Template $activities_template
    	 * @return string html output
    	 */
    	public function display_favorite_count() {
    		global $activities_template;
    
    		// BuddyPress < 2.0 or filtering bp_use_legacy_activity_query
    		if ( ! empty( $activities_template->activity->favorite_count ) ) {
    			$fav_count = $activities_template->activity->favorite_count;
    		} else {
    			// This meta should already have been cached by BuddyPress :)
    			$fav_count = (int) bp_activity_get_meta( bp_get_activity_id(), 'favorite_count' );
    		}
    
    		if ( ! empty( $fav_count ) ): ?>
    			<a name="favorite-<?php bp_activity_id();?>" class="button bp-primary-action">Favorited <span><?php printf( _n( 'once', '%s times', $fav_count ), $fav_count );?></span></a>
    		<?php endif;
    	}
    
    	/**
    	 * Filters
    	 */
    	private function setup_filters() {
    		add_filter( 'bp_ajax_querystring',              array( $this, 'activity_querystring_filter' ), 12, 2 );
    		add_filter( 'bp_activity_get_user_join_filter', array( $this, 'order_by_most_favorited' ),     10, 6 );
    		add_filter( 'bp_activity_paged_activities_sql', array( $this, 'order_by_most_favorited'),      10, 2 );
    
    		// Maybe Fool Heartbeat Activities!
    		add_filter( 'bp_before_activity_latest_args_parse_args', array( $this, 'maybe_fool_heartbeat' ), 10, 1 );
    	}
    
    	/**
    	 * Builds an Activity Meta Query to retrieve the favorited activities
    	 *
    	 * @param  string $query_string the front end arguments for the Activity loop
    	 * @param  string $object       the Component object
    	 * @uses   wp_parse_args()
    	 * @uses   bp_displayed_user_id()
    	 * @return array()|string $query_string new arguments or same if not needed
    	 */
    	public function activity_querystring_filter( $query_string = '', $object = '' ) {
    		if ( $object != 'activity' ) {
    			return $query_string;
    		}
    
    		// You can easily manipulate the query string
    		// by transforming it into an array and merging
    		// arguments with these default ones
    		$args = wp_parse_args( $query_string, array(
    			'action'  => false,
    			'type'    => false,
    			'user_id' => false,
    			'page'    => 1
    		) );
    
    		/* most favorited */
    		if ( $args['action'] == 'activity_mostfavs' ) {
    			unset( $args['action'], $args['type'] );
    
    			// on user's profile, shows the most favorited activities for displayed user
    			if( bp_is_user() ) {
    				$args['user_id'] = bp_displayed_user_id();
    			}
    
    			// An activity meta query :)
    			$args['meta_query'] = array(
    				array(
    					/* this is the meta_key you want to filter on */
    					'key'     => 'favorite_count',
    					/* You need to get all values that are >= to 1 */
    					'value'   => 1,
    					'type'    => 'numeric',
    					'compare' => '>='
    				),
    			);
    
    			$query_string = empty( $args ) ? $query_string : $args;
            }
    
            return apply_filters( 'bp_plugin_activity_querystring_filter', $query_string, $object );
    	}
    
    	/**
    	 * Ninja Warrior trick to reorder the Activity Loop
    	 * regarding the activities favorite count
    	 *
    	 * @param  string $sql        the sql query that will be run
    	 * @param  string $select_sql the select part of the query
    	 * @param  string $from_sql   the from part of the query
    	 * @param  string $where_sql  the where part of the query
    	 * @param  string $sort       the sort order (leaving it to DESC will be helpful!)
    	 * @param  string $pag_sql    the offset part of the query
    	 * @return string $sql        the current or edited query
    	 */
    	public function order_by_most_favorited( $sql = '', $select_sql = '', $from_sql = '', $where_sql = '', $sort = '', $pag_sql = '' ) {
    		if ( apply_filters( 'bp_use_legacy_activity_query', false ) ) {
    			preg_match( '/\'favorite_count\' AND CAST\((.*) AS/', $where_sql, $match );
    
    			if ( ! empty( $match[1] ) ) {
    				$new_order_by = 'ORDER BY '. $match[1] .' + 0';
    				$new_select_sql = $select_sql . ', '. $match[1] .' AS favorite_count';
    
    				$sql = str_replace(
    					array( $select_sql, 'ORDER BY a.date_recorded' ),
    					array( $new_select_sql, $new_order_by ),
    					$sql
    				);
    			}
    
    		// $select_sql is carrying the requested argument since BuddyPress 2.0.0
    		} else {
    			$r = $select_sql;
    
    			if ( empty( $r['meta_query'] ) || ! is_array( $r['meta_query'] ) ) {
    				return $sql;
    			} else {
    				$meta_query_keys = wp_list_pluck( $r['meta_query'], 'key' );
    
    				if ( ! in_array( 'favorite_count', $meta_query_keys ) ) {
    					return $sql;
    				}
    
    				preg_match( '/\'favorite_count\' AND CAST\((.*) AS/', $sql, $match );
    
    				if ( ! empty( $match[1] ) ) {
    					$sql = str_replace( 'ORDER BY a.date_recorded', 'ORDER BY '. $match[1] .' + 0', $sql );
    				}
    			}
    		}
    
    		return $sql;
    	}
    
    	/**
    	 * Cannot pass the favorite data for now so just fool heartbeat activities
    	 */
    	public function maybe_fool_heartbeat( $r = array() ) {
    		if ( empty( $r['meta_query'] ) ) {
    			return $r;
    		}
    
    		$meta_query_keys = wp_list_pluck( $r['meta_query'], 'key' );
    
    		if ( ! in_array( 'favorite_count', $meta_query_keys ) ) {
    			return $r;
    		} else {
    			$r['since'] = '3000-12-31 00:00:00';
    		}
    
    		return $r;
    	}
    }
    
    // 1, 2, 3 go !
    function bp_loop_filters() {
    	return new BP_Loop_Filters();
    }
    
    add_action( 'bp_include', 'bp_loop_filters' );
    
    
    HDcms
    Participant

    Hello,

    The ultimate goal is to mask the content and selector when a member arrives on the page of a public group to which it has not acceded. In fact he will see just the top of the page, and description button to join group

    screenshot:
    https://framapic.org/j4FYWFvZmHVI/sOyIzEz0Gl7F.png

    The idea is to reach over activities and other menu group visited oblige to register if he sees that description, avatar and the button to join

    I found bp_group_is_member to test ()
    http://buddypress.wp-a2z.org/oik_api/bp_group_is_member/
    If I do not put any argument, I understand that it will test whether the member is party group (and I add the condition to be displayed in a group?

    I have an error message:
    « Fatal error: Call to undefined function bp_group_is_member() in /var/www/../wp-content/plugins/bp-custom.php on line 3 »

    What I found to achieve the goal:

    if ( !bp_group_is_member() || bp_is_active('groups') )
     {add_filter( 'bp_after_has_activities_parse_args', 'my_bp_activity_types_non-membre' );}
     
    function my_bp_activity_types_non-membre( $retval ) {
        $retval['action'] = array(        
            //'activity_comment',
    	//'activity_update',
    	//'created_group',
    	//'friendship_created', nouv relation entre membre
    	//'joined_group',
    	//'last_activity',
    	//'new_avatar',
    	//'new_blog_comment',
            //'new_blog_post',
    	//'new_member',
    	//'updated_profile',
    	//'rtmedia_update'       
        ); 
        return $retval;

    Regards

    #258955
    danbp
    Participant

    Hi @tronix-ex,

    Give this a try. Read more will only appear again if you use more than 500 000 characters…
    Add to bp-custom.php

    function bpfr_excerpt_length( $length ) {	
    
    $length = 500000; // adjust the length to desired number of characters 
    
    // Is the current page a user's activity stream page ?
    	if( bp_is_user_activity() ) {
    	  return $length;
    	}
    }
    add_filter( 'bp_excerpt_length', 'bpfr_excerpt_length', 11, 1 );
    danbp
    Participant

    Hi @rezbiz,

    in brief, you want to add some status dependent custom link to the BuddyBar.

    I’ll ignore Kleo (premium theme) and Visual Composer (third party plugin).

    Following examples let you add an external link to a non BP page on almost any menus (except BP usermenu).

    How it works ?
    – create a test page and call it Book.
    – the page slug must be /book/
    – the link (tab/button) will be displayed to logged-in users only.

    I made also a snippet which add such a link to the WordPress Main Menu. This menu is the one you see in WP’s menu customizer by default. Depending the theme you use, you have always a main menu and X others. This can vary and it’s to you to find how it can/should work eventually. See theme documentation and WP Codex if you get in trouble with it.
    Note that it should work with all Twenty themes at least.

    Add the snippets to bp-custom.php and see the result. After that, read through the code and modify the page name/ID and slug to your need. Leave anything else untouched.

    
    // add Custom tab on site wide activity and members directory pages
    function tab_custom_link_to_page() {
    
    	if ( bp_is_activity_component() || bp_is_page( BP_MEMBERS_SLUG ) ) {
    
    		if ( !is_user_logged_in() )
    			return false;
    
    		// link to what you want
    		$link = bp_get_root_domain() . '/book';
    
    		echo'<li><a href="'. $link .'">My Book</a></li>'; 
    	}
      
    }
    add_action( 'bp_activity_type_tabs', 'tab_custom_link_to_page' ); // site wide activity page
    add_action( 'bp_members_directory_member_types', 'tab_custom_link_to_page' ); // members directory page
    
    // add Custom tab on Profile Nav
    function add_profiles_link_to_page(){
    
    	if ( bp_is_profile_component() || bp_is_user() ) {
    
    	if ( !is_user_logged_in() )
    		return false;
    
    	$link = bp_get_root_domain() . '/book/';
    
    	?>
    		<li><a href="<?php echo $link; ?>"><?php printf( 'My Book' ); ?></a></li>
    	<?php  
    	}
    }
    add_action( 'bp_member_options_nav', 'add_profiles_link_to_page' );
    
    // add Custom tab on Groups Nav
    function add_groups_link_to_page(){
    
    if( bp_is_active( 'groups' ) ) {
    
    	if ( !is_user_logged_in() )
    		return false;
    
    	$link = bp_get_root_domain() . '/';
    
    	bp_core_new_subnav_item( array(
    		'name'			=> 'My Book',
    		'slug'			=> 'book',
    		'parent_slug'		=> bp_get_current_group_slug(),
    		'parent_url'		=> $link,
    		'screen_function'	=> true, 
    		'position'		=> 40 ) );
    	}
    }
    add_action( 'bp_setup_nav', 'add_groups_link_to_page' );
    
    // add Custom tab on Groups Directory
    function add_groups_directory_link_to_page() {
    
    	if( bp_is_active( 'groups' ) ) {
    
    	if ( !is_user_logged_in() )
    		return false;
     
        if ( bp_is_current_action( 'custom' ) ) 
            return;
     
    	$link = bp_get_root_domain() . '/book';
    
        $button_args = array(
            'id'         => 'my-books',
            'component'  => 'groups',
            'link_text'  => 'My Book',
            'link_title' => 'My Book',
            'link_class' => 'my-books no-ajax',
            'link_href'  => $link,
            'wrapper'    => false,
            'block_self' => false,
        );  
       
        ?>
    		<li><?php echo bp_get_button( apply_filters( 'bp_get_group_custom_button', $button_args ) ); ?></a></li>
        <?php
    	}	
    }
    add_action( 'bp_groups_directory_group_filter', 'add_groups_directory_link_to_page' );
    
    // add Custom tab on WP Main Menu ( after Home, About, etc )
    function main_menu_custom_link_to_page( $menu ) { 
         
    	if ( !is_user_logged_in() )
    			return $menu;
    	else
     	// link to what you want
    	$link = bp_get_root_domain() . '/book';
    
    	$grouplink = '<li><a href="'. $link . '">My Book</a></li>';
    
    	$menu = $menu . $grouplink;
    	return $menu;
    }
    add_filter( 'wp_nav_menu_items', 'main_menu_custom_link_to_page' );

    Yes, it looks complicated, but it isn’t. Simply it’s not homogeneous ! 🙂

    danbp
    Participant

    @fearthemoose, @rezbiz,

    Here “the best guarded secret” finally revealed !
    But it’s not a secret, is part of Codex and a multi handled topic subject on this forum.

    What we want to do: remove access possibility.
    Where: on BuddyBar navigation menu (the one below the profile header).
    Specifics: make the activity and forum tabs only visible to the logged in user.

    NOTE: The activity tab is shown by default when you visit a profile.

    As we are going to hide/remove this tab to visitors, we need to define as first another default tab. If we won’t do that, the visitor will get a Page not found error. Which is not exactly the case here, the page exist but the visitor can’t access it.

    Let’s define arbitrary Profile as the new default tab. You can of course define what ever other existing tab on your BuddyBar as default.

    Add this line to bp-custom.php
    define( 'BP_DEFAULT_COMPONENT','profile' );

    Now the mega “open secret” !

    The folowing snippet contains almost any BP menu items you can have on a BuddyBar, and includes also the Forum item, in case you use bbPress.
    You can remove or comment out those you don’t want to use.
    Note also that it is only an example – you have to play with it to fit your need. But at least you have the right syntax to use.
    Note also that some profile menu items are user only, such as message or notice. In other words, these are always private.

    This function goes preferably to bp-custom.php

    function bpfr_hide_tabs() {
    global $bp;
    	 /**
    	 * class_exists() & bp_is_active are recommanded to avoid problems during updates 
    	 * or when Component is deactivated
    	 */
    
    	if( class_exists( 'bbPress' ) || bp_is_active ( 'groups' ) ) :
            
            /** here we fix the conditions. 
            * Are we on a profile page ? | is user site admin ? | is user logged in ?
            */
    	if ( bp_is_user() && !is_super_admin() && !is_user_logged_in() ) {
    
            /* and here we remove our stuff ! */
    		bp_core_remove_nav_item( 'activity' );
    		bp_core_remove_nav_item( 'friends' );
    		bp_core_remove_nav_item( 'groups' );
    		bp_core_remove_nav_item( 'forums' );
    	}
    	endif;
    }
    add_action( 'bp_setup_nav', 'bpfr_hide_tabs', 15 );

    Some other hints for privacy
    if you want to allow only the profile owner to view some tabs, replace
    !is_user_logged_in by !bp_is_my_profile() – this scenario doesn’t need a check for logged in users as it is made by bp_is_my_profile.

    If you want only to make a profile private, read here.

    If you want to remove a sub-nav item (ie. View on Profile), you use something like:
    bp_core_remove_subnav_item( 'profile', 'view' );

    Many other possibilities for navigation are also available, including for groups. Several examples are given on Codex, here.

    And if not enough, RTFM and search the forum ! 🙂

    Have fun !

    #258866
    danbp
    Participant

    Hi,

    not sure i understand correctly, but if you want the resume page to show as default landing tab (in place of the user activity) when you are on a profile, you can use this:

    define( 'BP_DEFAULT_COMPONENT', 'resume' );

    Add it to bp-custom.php

    Codex reference.

    #258782
    inzerat
    Participant

    This is part of buddypress. On activity page have meta title description “Side wide Activy – Name of web” a i want change this in bp-custom.php

    sixthgalaxy
    Participant

    I would like to show a new custom button in the activity stream’s entry page just beside delete button, which action hook should I use.

    #258638
    danbp
    Participant

    I’m unable to reproduce your issue on a single install with over 20 plugins active and plenty of custom functions active in bp-custom.php
    I can upload medias without problem with different 3th party themes or Twenty’s

    Try to upload a fresh copy of WordPress and BP and see if it makes a difference.

    Now about the snippet.
    It works more or less, no code error. You commented the action, so it is deactivated if someone copy/paste it without correcting this.

    That said, what is the reason behind using a redirection to login if the site, or at least the buddyPress parts, should be private ?

    Wouldn’t it be more logic to redirect visitors to an anonymous page with some important information, from which the first one could be Sorry, but this site is private ? Followed by some informations how to register or pay a fee or whatever the reason.

    A private site has two type of visitors: those invited to join and the others. Don’t give the opportunity to those who are there by chance to enter the site so easily.

    I let you think about this and eventually create an appropriate page and template.
    Here a code example redirecting to a page called Intranet and the correct calls to slugs for all components (including bbPress).

    function bpfr_guest_redirect() {
    global $bp;
    // enter the slug or component conditional here
    	if ( bp_is_activity_component() || bp_is_groups_component() || bp_is_blogs_component() || bp_is_page( BP_MEMBERS_SLUG ) || is_bbpress() ) {
    	
    // not logged in user are redirected to - comment/uncomment or add/remove to your need
    		if( !is_user_logged_in() ) { 
    			//wp_redirect( get_option('siteurl') ); //back to homepage
    			//wp_redirect( get_option('siteurl') . '/register' ); // back to register page	
    			wp_redirect( get_option('siteurl') . '/intranet' ); // back to whatever page
    		} 
    	}
    }
    add_filter( 'get_header', 'bpfr_guest_redirect', 1 );

    Add it to child-theme’s functions.php

    #258589
    ositive
    Participant

    I tryed to work also with this solution (provided by @shanebp too):
    https://buddypress.org/support/topic/creating-a-new-order-by-filter-in-groups-loop-with-custom-sql/
    but I do not obtain to order members by rating.. is this the right approach??

    function antares_members_filter_options() {
        echo '<option value="rating">rating</option>';
    }
    add_action( 'bp_members_directory_order_options', 'antares_members_filter_options' );
    
    function antares_ajax_querystring( $query_string, $object ) {
    
    	if ( 'members' != $object ) 
    		return $query_string;
    
    	if ( ! bp_is_members_directory() ) 
    		return $query_string;
    	
    	$query_args = wp_parse_args( $query_string, array() );
    
            $page = $query_args['page'];
    
    	if( isset( $query_args['action'] ) && $query_args['action'] == 'rating' ) {
    	
    		$query_args = array();
    		$query_args['page'] = $page;
    		$query_args['orderby'] = 'rating';		
    		$query_args['order'] = 'ASC';			
    		$query_args['include'] = antares_get_members(); 
    		$query_string = http_build_query( $query_args );
    
    	}
    
    	return $query_string;
    
    }
    add_filter( 'bp_ajax_querystring', 'antares_ajax_querystring', 32, 2 );
    
    function antares_get_members() {
        global $wpdb;
    
            $sql = "SELECT 
    					a.ID as id, a.user_login AS name, a.display_name AS displayname, AVG(star) AS rating, COUNT(star) AS reviews
    				FROM 
    					{$wpdb->prefix}users AS a
    				LEFT JOIN 
    					{$wpdb->prefix}bp_activity AS b ON a.ID = b.usercheck
    				WHERE 
    					(b.is_activated is null or b.is_activated=1)
    				GROUP BY 
    					id
    				ORDER BY 
    					rating DESC";
        
    $buff = array();
    
    $result = $wpdb->get_results( $sql , OBJECT );
    
    		foreach ($result as $row) {
    			$buff[]= $row->id ;
    		}
    		
    $query_str= implode (',', $buff);
    return $query_str;
    }
    #258559
    jbboro3
    Participant

    Why don’t you just put this two lines of css code in your theme’s css or custom css page instead of trying to get into functions files..

    a.button.item-button.bp-secondary-action.delete-activity.confirm {
    display: none;
    }
    a.delete.acomment-delete.confirm.bp-secondary-action {
    display: none;
    }

    #258373
    jbboro3
    Participant

    Hello bp community,

    As I’m relatively new to buddypress, I couldn’t figure out why my widgets are not showing up even after assigning the widget on a relevant page (Home profile page/ members page).

    Interestingly, it shows up whenever I assign the widgets to “404 NOT FOUND” page.. The settings are fine. There is already proper allocation of members pages and Activity streams (NOT in the “404 NOT FOUND” page). Even creating custom template page and assigning them didn’t work either.. Seems like members pages are acting like NONE existent on the actual page they are assigned with

    Am I doing something wrong with the configuration? Please share if someone is facing the same problem..

    Thanks

    lomaymi
    Participant

    I’m trying to change the way new blog posts are seen on the Site Wide Activity page and I’m halfway there, but having a few issues. Here what I have so far (in bp-custom.php):

    
    <?php
    
    // Edits how blog posts appears on activity feed.
    
    function bp_full_posts_in_activity_feed( $content, $activity ) {
    
         if ( 'new_blog_post' == $activity->type ) {
    
            $post = get_post( $activity->secondary_item_id );
    
         if ( 'post' == $post->post_type )
                 $title = isset( $post->post_title ) ? $post->post_title : '';
                 $content = apply_filters( 'the_content', $post->post_content );
                 $author = "<h5 align=center>By Author Name Here</h5>";
                
         }
        
        echo "<h2 align=center>" .$title. "</h2>";
        echo $author;
        echo $content;
         
    }    
    add_filter( 'bp_get_activity_content_body', 'bp_full_posts_in_activity_feed', 10, 2 );
    

    What I’m trying to do is instead of having the full post I want for the post to break whenever the more tag is used in a post. After the more tag a text or button should appear saying “Read More”. I tried a few things with no success, will appreciate some pointers in the right direction.

    Another thing (although not that important) is that instead of having a default text with “By Author Name Here” it would be great if it can print the name of the post author. I tried using get_the_author(), the_author() and the_author_link(), but none of them were able to show the name in the activity feed.

    Thanks in advance

    #258189
    jbboro3
    Participant

    Hey, @danbp Thanks for the long and detailed response.

    I’m fully aware of what you’re trying to convey the risk factors on this.. But as my requirements are different, I’ve completely disabled the media library and allowed access the users to each individual gallery only (negating the access of other’s files).. I’ve uploaded images hosted on sub-domains that completely separate from the main site.

    All the activities that takes place on the site are on the front end.. The back end wp administrator dashboard are disabled for editing ( of course they are enabled for updating plugins & adding pages occasionally) as most of the pages are done in custom-template.. No admin or author level privileges are created on the site – just the subscriber as it’s mainly a networking site.. The idea that attaching the media button gives lots of flexibility to the users to resize the images or review them in the content area itself before they can post the activity.. Unless it’s a forums or community sites, for a networking sites, leaving alone with html codes or text editors may be (perhaps) discouraging impression for the social users.

    I’m glad that you pointed out it’s more of a wordpress thing than buddypress.. I’ll have a look at the possibility of getting it work and let you know.

    Thanks.

    #258125
    danbp
    Participant

    The ultimate tutorial to add wp_editor to What’s New textarea (on Site, Members and Group Activities pages).

    Warning
    The What’s New feature was never intended to publish posts or formatted text. It was imagined for brief announcement or instant conversation. That’s why this textarea is texturized and doesn’t allow much HTML tags. It is also ajaxified and need the original BP ID to work.
    You will use it at your own risk.

    The following trick will let you remove the existing textarea from the template and replace it with a custom wp_editor. And it will be very customized ! For example, you will not have the visual tab, but only his HTML version, similar to the one you see on this forum for example.

    Required:
    BuddyPress activated
    a working child theme
    some understanding of HTML and php grammar

    This trick was succesfully tested on a single install with WP 4.6, BP 2.6.2 and a Twenty Sixteen child theme.

    Start !
    Read from here how to remove the textarea in post-form.php

    The code to remove is line 40 and looks like this:

    <textarea class="bp-suggestions" name="whats-new" id="whats-new" cols="50" rows="10"
    	<?php if ( bp_is_group() ) : ?>data-suggestions-group-id="<?php echo esc_attr( (int) bp_get_current_group_id() ); ?>" <?php endif; ?>
    ><?php if ( isset( $_GET['r'] ) ) : ?>@<?php echo esc_textarea( $_GET['r'] ); ?> <?php endif; ?></textarea>

    You replace it by:

    <?php
    $content = '';
    $editor_id = 'whats-new';
    wp_editor( $content, $editor_id );
    ?>

    As the visual edit tab doesn’t work, you must deactivate it. In your child-theme functions.php, add this:
    add_filter( 'user_can_richedit' , '__return_false', 50 );

    And that’s it !

    If you want also rich edit for activity comments, which i didn’t recommand for sites who have many comments, you can use the same technique as above, with some more settings. Note that each comment has is own ID and that each comment editor should also have an unique ID.

    First, you need to remove the textarea from (child-theme/buddypress/)activity/entry.php
    You remove this:
    <textarea id="ac-input-<?php bp_activity_id(); ?>" class="ac-input bp-suggestions" name="ac_input_<?php bp_activity_id(); ?>"></textarea>
    and replace it by

    <?php
    $id             = bp_get_activity_id();
    $content	= '';
    $editor_id	= 'ac-input-'. $id;
    $settings	= array( 
    			'textarea_name'	=> 'ac_input_'. $id,
    			'editor_class'	=> 'ac-input bp-suggestions'
    		);
    wp_editor( $content, $editor_id, $settings );
    ?>

    With Twenty Sixteen, i first couldn’t see the Post Update button and the option selector. I got it with this little CSS adjustment (in child-theme/style.css).

    div#whats-new-options { display: block!important;}

    Function reference: wp_editor.

Viewing 25 results - 226 through 250 (of 1,252 total)
Skip to toolbar