This question is probably more relevant to the WPSSO Schema JSON-LD Markup extension. ??
WPSSO and its extensions document the webpage content and treats the webpage content like WordPress does – single posts/pages/etc. have a single content block, and categories / tags are a collection of single content blocks (aka post IDs).
It sounds like you’re trying to use a single “post object” to include several blocks, which are related — generally, related content is assigned a category or tags to present different (but related) content on a single page. WPSSO would treat this kind of content as a Schema Collection.
If you’re using a plugin to manage your events / courses / etc., that plugin should also create a post ID for every event / course / etc. It sounds like you may be doing this manually, which might make things more challenging in the future. ??
Have a look at the [schema] shortcode from the WPSSO JSON – this would allow you to manually include additional markup in the JSON-LD block.
js.