To remove the default tabs, you’ll need to modify the theme.
Read this page:
https://codex.buddypress.org/theme-development/building-a-buddypress-child-theme/
Then, once you’ve got the hang of that. Copy over /bp-themes/bp-default/header.php to your new child theme and modify the tab structure.
The function you’ll want is:
`is_user_logged_in()`
Wrap a is_user_logged_in() conditional around the tabs you want to show only for logged in users.
Something like this:
`
<li class=”selected”>
<a href="//” title=””>
<li class=”selected”>
<a href="//” title=””>
<li class=”selected”>
<a href="//” title=””>
<li class=”selected”>
<a href="//” title=””>
<li class=”selected”>
<a href="//” title=””>
`
Note that if someone knows the URLs to those tabs, they’ll still be able to access them.
You might want to look into some BP private plugins like:
https://wordpress.org/extend/plugins/buddypress-private-community/
https://wordpress.org/extend/plugins/private-buddypress/
Is there a plugin which dis-enables private messaging for users with a subscription capability but enables users with capabilities above the subscription level to use the private messaging function
Thanks @r-a-y
This is a better solution. Any thoughts on how to solve the same problem with @mentions?
I’m developing a site, testing plugins etc. I’m running the default theme. I’ve got a private install hosted remotely with early adopters adding content.
I’ve just noticed that if I step back in time with the “Load More” button on the main Activity stream at /activity/, previous content loads properly once and then subsequently loops (ie. the same block of content displays from each request, allowing seemingly infinite instances of itself). I’ve been running quite a few plugins, so I’ve disabled everything except the BP core, removed any widgets, and this behaviour persists.
Members’ individual Activity streams are functioning normally, ie. I can load their content back to their first contribution. However the main Activity stream is looping forever.
I’m pretty certain this has been working fine previously.
Thanks @r-a-y , I’ll give it a go.
No need to hack BP.
Put the following in your theme’s functions.php:
`
function ray_bp_get_send_public_message_link() {
global $bp;
return wp_nonce_url( $bp->loggedin_user->domain . $bp->activity->slug . ‘/?r=’ . $bp->displayed_user->userdata->user_login );
}
add_filter( ‘bp_get_send_public_message_link’, ‘ray_bp_get_send_public_message_link’ );
function ray_bp_get_send_private_message_link() {
global $bp;
return wp_nonce_url( $bp->loggedin_user->domain . $bp->messages->slug . ‘/compose/?r=’ . $bp->displayed_user->userdata->user_login );
}
add_filter( ‘bp_get_send_private_message_link’, ‘ray_bp_get_send_private_message_link’ );`
Thanks for the followup Greg. What is the exact change you made to the bp-messages-templatetags.php? Trying to figure out if it has already been updated in SVN.
@mercime
Already select P2 on SuperAdmin > Themes, the problem is that on Appearance > Theme I select P2 but it not show as selected on same page instead BP-default show as selected, but if you hit the secon blog url it use P2.
Is there a way to sent you blog info privately, so you can check this issue ?
Regards,
For anyone else with this issue, here is the fix. Thanks to @sbrajesh
in bp-messages-templatetags.php, starting at line 498:
function bp_send_private_message_link() {
echo bp_get_send_private_message_link();
}
function bp_get_send_private_message_link() {
global $bp;
if ( bp_is_my_profile() || !is_user_logged_in() )
return false;
$user=new WP_User($bp->displayed_user->user_id);
return apply_filters( ‘bp_get_send_private_message_link’, $bp->loggedin_user->domain . $bp->messages->slug . ‘/compose/?r=’ .$bp->displayed_user->userdata->user_login );
}
Private messaging now works with persistent caching like memcached.
It looks like BP 1.3 is going to address some issues with object caching. https://trac.buddypress.org/ticket/2636
Can anyone who knows confirm if it will fix these messaging issues?
Hi,
new to BuddyPress and I was wondering if these two things were possible
1: Linking Groups
I am doing a website where there are 3 different levels of groups. Each level can have several groups. I want a way to enable a group to have a “relationship” or “link” with another group and for that “link” to be meaningful i.e. “A works for B”, “B is part of C”, “D supplies E with drink” etc
2: Public… yet Private
I want to able to have all my groups viewable but have people request to be a part of them and then an admin approve/decline that request
Any of this possible?
Thanks,
JJ
I’ve been wresting with an issue where memcached causes problems with buddypress private messaging and @mentions. Rather than try and bring back a old, confusing thread, I want to start fresh and clearly explain the issue.
I’m using memcached. When I click to send a private message or @mentions, the wrong recipient shows up. This is a known issue that, supposedly, many of us who using persistent caching have. My confusion is in the fix.
Trac ticket #2583 (http://trac.buddypress.org/ticket/2583) offers a patch, where you change a line in bp-messages-templatetags.php. This is easy to do, but it doesn’t fix the issue by itself. Further down the ticket, @r-a-y says:
“With the patch, you’d still need to apply a filter to “bp_get_send_private_message_link” and override it so it doesn’t use bp_core_get_username().
The same problem occurs with the bp_get_send_public_message_link() function – aka the “Mention this user” link.”
I know just enough php to get myself into trouble and this is beyond me. Has anyone done this? Could anyone point me in the right direction for how to apply these filters?
Thank you!
Hi,
very strange but logged in users cannot view private or other group activity, which is fine, the thing is guests (not logged) can view them all? is there a fix or a plugin to control who views what?
many thanks.
I want to be able to have specific information appear on my members BP pages when they log in. I need to have their individual financial information appear at least once a week so that only each person’s information shows on their private profile. Is there a way to get in and show them this information without making it public to everyone?
I agree to this! For now, how can I switch the places between the cancel friendship button with send private message buttons?
Sure. There’s one featured WordPress.tv presentation from WordCamp Yokohama. It’s a Japanese site (with English translation), http://loftwork.com, which only used BuddyPress components like Blog Tracking, Activity Streams, Private Messaging and Extended Profiles. Didn’t use Friends, Groups and Forums.
–
@r-a-y I think my issue is beyond a simple email issue. I installed the email plugin you mentioned just to humor the situation. When I try to send a private message I get redirected to the homepage of my site. So I could either be experiencing a 404 error or some other similar problem.
Also Im not even getting notifications at the recipient. I also do not have a message in the senders sent message box nor in the recipients inbox.
Thanks,
Just to update, I applied the code from the patch with no luck. Here’s what my messages-templatetags.php code now says:
function bp_send_private_message_link() {
echo bp_get_send_private_message_link();
}
function bp_get_send_private_message_link() {
global $bp;
if ( bp_is_my_profile() || !is_user_logged_in() )
return false;
return apply_filters( ‘bp_get_send_private_message_link’, $bp->loggedin_user->domain . $bp->messages->slug . ‘/compose/?r=’ . bp_core_get_username( $bp->displayed_user->user_id, $bp->displayed_user->userdata->user_nicename, $bp->displayed_user->userdata->user_login ) );
}
It looks like I now need to “apply a filter to “bp_get_send_private_message_link” and override it so it doesn’t use bp_core_get_username().” Anyone know how to do this?
Thanks guys.
@r-a-y
Thanks for the link, but I’m confused a bit. My current code already has that patch in it, changing the “public” to “private” looks to be the only switch. I’m guessing this was changed in a more recent BP release?
And, you said:
“With the patch, you’d still need to apply a filter to “bp_get_send_private_message_link” and override it so it doesn’t use bp_core_get_username().
The same problem occurs with the bp_get_send_public_message_link() function – aka the “Mention this user” link.”
It sounds like this is the step I need to take. How exactly do I apply this filter?
Thanks!
Check out:
https://trac.buddypress.org/ticket/1332
https://trac.buddypress.org/ticket/2636
You can temporarily fix private messaging by overriding the username filter. See #2583 for hints.
Batcache isn’t supposed to impact logged-in users, so it seemed like a natural fit for BP.
Paul, you think this is a BP issue as opposed to just tweaking a caching setting?
I know that there are people using BP with memcached and W3Total cache…are any of you guys having trouble with this? (W3TC doesn’t worth with multi-db’s or I’d be using it)
Probably more the other way; that BuddyPress needs to communicate when caches need to be refreshed better.
Hmm, I was under the impression batcache would only cache public pages (non-logged in users). The above seems to indicate otherwise. Is batcache really buddypress aware (I noticed the last update of the plugin via the repo was back in April ’09).
I’ve got a large blog farm with multi-db’s using memcached & batcache to handle the load. The problem is that with BP, if I click to send a private message to a user, it shows the wrong recipient on the composition screen.
If I flush the cache and try again it works.
Has anyone else been able to tweak the caching settings with object-cache.php or advanced-cache.php to get this to work?
Here’s what I have:
function batcache_cancel() {
global $batcache;
if ( is_object($batcache) )
$batcache->cancel = true;
}
class batcache {
// This is the base configuration. You can edit these variables or move them into your wp-config.php file.
var $max_age = 180; // Expire batcache items aged this many seconds (zero to disable batcache)
var $remote = 0; // Zero disables sending buffers to remote datacenters (req/sec is never sent)
var $times = 2; // Only batcache a page after it is accessed this many times… (two or more)
var $seconds = 0; // …in this many seconds (zero to ignore this and use batcache immediately)
var $group = ‘batcache44’; // Name of memcached group. You can simulate a cache flush by changing this.
var $unique = array(); // If you conditionally serve different content, put the variable values here.
Is there some way to exclude the message page?
Thanks!
I am a professional developer, but new to WordPress and Buddypress. Just looking for some general project design guidance from those with experience.
A client wants to build a student athelete directory for their local school district. The requirements are pretty simple.
1) Atheletes will be categorized by sport, and then sub-categorized by the position they play at that sport.
2) They will have simple profiles with biography, playing statistics, pictures, and video(s)
3) They should be able to register for a profile, pay a small fee, and update their own profile
4) NO other social functionality needed. No status updates, blogs, private messages, etc… They just need a simple profile they can edit and no more.
I found a similar site, with the exact same basic functionality (although way more advanced than necessary for my project). http://www.berecruited.com/athletes. Here is an example of a student athlete profile http://profiles.berecruited.com/athletes/830295.
Can I do this with Buddypress or is there some other solution that is better for my needs? Any sort of guidance, suggestions, etc would be much appreciated.