Filtering group sessions from the block editor shows an empty list. The browser console shows the offerings request failing:
{"code":"rest_forbidden","message":"Sorry, you are not allowed to do that.","data":{"status":403}}
Cause
The editor's group-class dropdown fetches GET /wp-json/us-scheduler/v1/offerings (assets/js/blocks.js), but that route's permission_callback requires book_lesson only. That capability is granted solely to the us_student role — administrators and instructors hold manage_offerings but never book_lesson. So anyone actually editing a page is rejected with a 403, and the JS .catch falls back to an empty array, leaving the picker blank with no visible error.
Fix
Allow the offerings listing to be read by either book_lesson or manage_offerings. The response itself should be unchanged — still active offerings only, public ones plus invite-only classes the caller has been granted, with the e-transfer email omitted.
docs/features/offerings.md also still documents this endpoint as "Public", which is stale either way.
Filtering group sessions from the block editor shows an empty list. The browser console shows the offerings request failing:
```json
{
"code": "rest_forbidden",
"message": "Sorry, you are not allowed to do that.",
"data": { "status": 403 }
}
```
## Cause
The editor's group-class dropdown fetches `GET /wp-json/us-scheduler/v1/offerings` (`assets/js/blocks.js`), but that route's `permission_callback` requires `book_lesson` only. That capability is granted solely to the `us_student` role — administrators and instructors hold `manage_offerings` but never `book_lesson`. So anyone actually editing a page is rejected with a 403, and the JS `.catch` falls back to an empty array, leaving the picker blank with no visible error.
## Fix
Allow the offerings listing to be read by either `book_lesson` or `manage_offerings`. The response itself should be unchanged — still active offerings only, public ones plus invite-only classes the caller has been granted, with the e-transfer email omitted.
`docs/features/offerings.md` also still documents this endpoint as "Public", which is stale either way.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Filtering group sessions from the block editor shows an empty list. The browser console shows the offerings request failing:
Cause
The editor's group-class dropdown fetches
GET /wp-json/us-scheduler/v1/offerings(assets/js/blocks.js), but that route'spermission_callbackrequiresbook_lessononly. That capability is granted solely to theus_studentrole — administrators and instructors holdmanage_offeringsbut neverbook_lesson. So anyone actually editing a page is rejected with a 403, and the JS.catchfalls back to an empty array, leaving the picker blank with no visible error.Fix
Allow the offerings listing to be read by either
book_lessonormanage_offerings. The response itself should be unchanged — still active offerings only, public ones plus invite-only classes the caller has been granted, with the e-transfer email omitted.docs/features/offerings.mdalso still documents this endpoint as "Public", which is stale either way.