Skip to content

Pin Quotas — Per User vs Per Admin

The plugin keeps two independent caps so member pins and admin pins never compete for the same budget. Both live in WB Plugins → Sticky Post → Permissions under Pinning Limits.

Pinning Limits in the Permissions tab

Field Default Range
Per user 1 0–10 (0 = unlimited)

Caps how many activities a single member can pin on their own profile activity tab at one time. Once they hit the cap, the Pin Post button still appears but the click returns “Failed to pin the activity. You may have reached your pin limit.”

Recommended: 1. Encourages members to highlight one thing that genuinely matters most.

Field Default Range
Per admin (site-wide) 0 (unlimited) 0–50

Caps how many sitewide pins can exist on the main /activity/ stream. Counted across all administrators — the cap is global, not per-admin.

Recommended: 2 or 3. Too many sitewide pins push down regular community activity and members start ignoring the ribbon entirely.

Both quotas are enforced server-side in bpsp_check_pin_quota(). Three entry points share the same helper:

  1. Frontend pin button — the AJAX handler.
  2. REST APIPOST /buddypress/v1/activity/{id}/sticky (REST clients cannot bypass the limit).
  3. WP-CLIwp bpsp pin returns the same error.

A single helper means you only have to set the cap in one place — every channel respects it.

These contexts skip the per-user cap inside their scope:

  • Site administrators — always bypass both caps (they are subject to the per-admin cap when pinning sitewide, however).
  • Group admins / moderators — bypass the per-user cap for pins inside their own group. Useful when a group leader needs to pin three or four threads without hitting the personal-pin ceiling.
  • Personal pins by site admins — if an admin pins on a member’s profile, the pin counts against the member’s per-user cap, not the admin cap.
$settings = get_option( 'bpsp_general_settings', array() );
$settings['max_user_sticky_posts'] = 3; // Per user
$settings['max_admin_sticky_posts'] = 2; // Per admin (sitewide)
update_option( 'bpsp_general_settings', $settings );