BuddyDev

Search

Are you using the BP Private Message Rate Limiter plugin to limit the number of private messages a user can send on a BuddyPress site during a given duration. If yes, then this guide will help you to  set different limits on the messages for different user roles.

Rate Limit The Number of Private Messages:-


add_filter( 'bp_rate_limit_pm_count', 'devb_custom_private_message_limit_count', 10, 2 );
function devb_custom_private_message_limit_count( $count, $user_id ) {

if( ! $user_id )
$user_id = get_current_user_id ();

if( user_can( $user_id, 'create_users' ) ) //admin
$count = 10;
elseif( user_can( $user_id, 'moderate_comments' ) )
$count = 8; //for editors
elseif( user_can( $user_id, 'edit_published_posts' ) )
$count = 6; //for authors
elseif( user_can( $user_id, 'edit_posts' ) )
$count = 6; //for Contributors
elseif( user_can( $user_id, 'read' ) )
$count = 6; //for Subscriber

return $count;
}

 

You can put the above code in bp-custom.php

Changing the allowed duration for different user types

add_filter( 'bp_rate_limit_pm_throttle_duration', 'devb_custom_private_message_throttle_duration', 10, 2 );

function devb_custom_private_message_throttle_duration( $duration, $user_id ) {

if( ! $user_id )
$user_id = get_current_user_id ();

if( user_can( $user_id, 'create_users' ) ) //admin
$duration = 2;// how many mins
elseif( user_can( $user_id, 'moderate_comments' ) )
$duration = 4; //for editors
elseif( user_can( $user_id, 'edit_published_posts' ) )
$duration = 6; //for authors
elseif( user_can( $user_id, 'edit_posts' ) )
$duration = 8; //for Contributors
elseif( user_can( $user_id, 'read' ) )
$duration = 10; //for Subscriber

return $duration;

}

 

You can use the above code to set different limits for different User types based on the WordPress user roles.