Skip to content

Group-scoped Job Boards

Turn any BuddyPress group into its own job board, with a “Jobs” tab in the group navigation that shows only that group’s jobs. The main site-wide job board is unaffected.

This integration is off by default. Turn it on under WP Admin → Career Board → Settings → Integrations → BuddyPress → Group Job Boards. Leaving it off keeps your Boards list clean on communities with many groups.

When you switch Group Job Boards on:

  • Every new BuddyPress group gets a matching job board automatically.
  • All of your existing groups are added as boards in the background (see Adding existing groups below).
  • A “Jobs” tab appears in each group’s navigation.

Turning it back off stops new group boards from being created and hides the Jobs tab. Boards already created are kept - nothing is deleted, so no jobs or data are lost, and re-enabling picks up where it left off.

When the integration is on and a BuddyPress group is created, BpGroupBoards listens on groups_created_group and creates a matching wcb_board CPT post. The two are linked through meta:

  • wcb_board post → _wcbp_group_id post-meta = BP group id
  • BP group → wcbp_board_id group-meta = wcb_board post id

The board’s title stays in sync with the group’s name automatically (groups_group_after_save), and the board is moved to trash when the group is deleted (groups_group_deleted).

A new Jobs tab appears in the group navigation at nav position 60. Inside the tab is the standard Free job-listings block scoped to the group’s board - same search, chip filters, infinite scroll, and bookmarking as the public job board. The tab is rendered with:

do_blocks( '<!-- wp:wp-career-board/job-listings {"boardId":<board_id>} /-->' );

If the group has no board yet, the tab shows “No jobs board for this group yet.”

The first time you switch the integration on, WP Career Board Pro adds a board for every group you already have. This runs in the background in small batches (50 groups at a time) so it stays fast and safe even on communities with thousands of groups - you do not need to visit each group or run anything by hand.

The backfill is resumable and skips any group that already has a board, so it never creates duplicates. While it is still working through your groups, any group whose page is visited also gets its board created on the spot (register_group_nav calls on_group_created when no board is linked yet).

There is no dedicated “Post a Job” button on the group Jobs tab itself. Members post through the global “Post a Job” page, and the board they choose is filtered to the groups they belong to: Pro hooks wcb_board_options_for_employer (restrict_boards_to_user_groups) so a member only sees group-backed boards for groups they are a member, mod, or admin of. Boards that are not linked to a BP group (the site-wide default board, admin-created boards) always stay in the picker. Site admins (manage_options) see every board.

So a member of “Acme Engineering” can pick that group’s board when posting, and the job lands on the group’s Jobs tab rather than the site-wide board.

By default only users with the global wcb_moderate_jobs ability can approve / reject jobs. Group admins and mods get an exemption for jobs that live on their own group’s board - see Group-scoped moderation.

If you already have a manually-created wcb_board and want to link it to a group instead of letting the integration auto-create one, write both meta keys so the integration can resolve the link in either direction:

add_action( 'init', function () {
// Match the constants in BpGroupBoards exactly.
update_post_meta( $existing_board_id, '_wcbp_group_id', $group_id ); // BOARD_GROUP_META
groups_update_groupmeta( $group_id, 'wcbp_board_id', $existing_board_id ); // GROUP_BOARD_META
});

The group nav, activity routing, board picker, and group moderation all read these two keys.