Skip to content

Permissions Tab

Three cards — Who Can Pin (role grid for personal/profile pins), Group Pin Authority (radio for who can pin inside groups), and Pinning Limits (per-user / per-admin caps). Site administrators can always pin everywhere; this tab decides who else gets the button.

Permissions tab with role grid, group pin authority, and pinning limits

A role grid showing every WordPress role on the site (excluding administrator, which is always allowed). Tick the roles whose members should see the Pin Post button on their own profile activity.

  • ToolbarSelect all / Clear all helpers, plus a live counter (“4 of 9 roles selected”).
  • Behavior — only members whose role is ticked see the Pin button on their profile activity. Site administrators ignore this list entirely.

The role list is generated from wp_roles()->get_names() so it picks up custom roles automatically.

Inside BuddyPress groups, who is allowed to pin activity? Four radio choices:

Setting Who can pin in groups
Group creator only Only the user who created the group
Group creator and admins Creator + group admins
Group creator, admins, and moderators (default) Creator + admins + mods — matches the historical 2.3.x behavior
Any group member Every confirmed member of the group

Site administrators (bp_moderate capability) always pass regardless of this setting. Stored as bpsp_general_settings.group_pin_scope (string: creator / admin / mod / all).

Existing pinned activities are never deleted when this setting changes. When you tighten the rule (e.g. switch from “Any member” to “Group admins only”), pre-existing pins by members who lose permission are preserved — and the original pinner can still remove their own pin via the Unpin button. The unpin gate is intentionally more permissive than the pin gate, so legacy pins are never stuck.

Two number inputs control the quota system.

Field Default Range Stored as
Per user — pins on their own profile 1 0–10 bpsp_general_settings.max_user_sticky_posts
Per admin (site-wide) — pins on the main activity stream 0 (unlimited) 0–50 bpsp_general_settings.max_admin_sticky_posts

0 in either field means unlimited. The full mechanics — including which contexts bypass the cap — live in Pin Quotas.

  • The form posts to options.php with the bpsp_general_settings_section setting group and gets sanitized through BPSP_Admin::sanitize_settings().
  • The role grid uses a hidden bpsp_array_rendered_keys[] sentinel so Clear all (which submits zero checked boxes) actually persists as “no roles selected” instead of falling back to the previously stored value.
  • After save, WordPress redirects back to the Permissions tab and renders the standard Settings saved notice.
  • Pin Scopes — context for which roles do what.
  • Pin Quotas — quota mechanics across REST / AJAX / WP-CLI.