Release notes / WP Career Board Pro
Premium Plugin Plugin

WP Career Board Pro

Once jobs flow in, you need pipeline tracking, paid postings, and resume search. Standalone ATS tools sit outside WordPress. WP Career Board Pro adds a Kanban hiring pipeline, unlimited boards, and WooCommerce monetization inside the site.

12 releases
v1.4.6 latest
June 15, 2026 shipped

v1.4.6 Latest

June 15, 2026
New 1 Improve 1 Compat 1

New

  • Hide a custom field group on specific job boards from the group's "Hide on boards" control on the Job Fields tab. Scales to any number of boards.

Improve

  • Field Builder: define a custom field once and it applies to every board. You no longer recreate the same fields for each board. Company fields are now global, matching candidate and resume fields.

Compat

  • Aligned with WP Career Board 1.4.6. Install both updates together.

v1.4.5

June 15, 2026
New 2 Fix 3 Compat 1

New

  • Years of experience and Open to Work fields are now in the full resume builder and the resume form, not just the simple profile form. Candidates who edit via any builder now feed the Find Candidates Experience and Open-to-Work filters.
  • Field Builder choices editor. Configure the options for dropdown, multi-select, radio and checkbox custom fields directly in the builder; previously choice fields could not be given any options.

Fix

  • Editing a custom field now keeps its configured choices. The update path dropped the options and rules, so a saved dropdown reverted to no choices.
  • Custom field types beyond text now render and save end to end - multi-select, date range, salary range, video URL, file link, location and repeater (one entry per line).
  • Skills added in the resume builder now appear in the candidate directory skill filter right away. The taxonomy sync ran before the new skills were saved, so they surfaced only on the next save.

Compat

  • Aligned with WP Career Board 1.4.5. Install both updates together.

v1.4.4

June 15, 2026
New 1 Improve 1 Fix 2 Compat 1

New

  • Candidate experience filter on the Find Candidates directory. Visitors can filter candidates by experience level, with bands derived from each candidate's years of experience and customizable via the wcbp_resume_experience_bands filter.

Improve

  • Resume proficiency is now a single filterable scale. The builder dropdown and the resume bar both derive from one source (wcbp_resume_proficiency_scale), so a level you add appears on both input and output.

Fix

  • Resume proficiency no longer shows a phantom level. A value with no defined weight renders no bar instead of a misleading one.
  • The candidate directory "Clear filters" button now clears hero and URL filters (skill, experience, search, open-to-work) instead of leaving the archive filtered.

Compat

  • Aligned with WP Career Board 1.4.4. Install both updates together.

v1.4.3

June 1, 2026
New 1 Improve 1 Fix 1 Dev 1 Compat 1

New

  • BuddyPress Group Job Boards are now opt-in. A Group Job Boards toggle under Settings > Integrations > BuddyPress (off by default) turns each group into its own job board; enabling it backfills your existing groups as boards in the background, and turning it off keeps boards already created.

Improve

  • WP Career Board Pro adapts to BuddyX and BuddyX Pro 5.1 light and dark color modes (avatars, dashboards, buttons, and widgets re-color correctly in dark mode).

Fix

  • Career Board notifications now appear in the theme notification bell (Reign, BuddyX) instead of only the dashboard tabs. The notifications were saved but never registered with the theme's notification component, so the header bell stayed empty.

Dev

  • New wcb_notification_created action so a central notification center (BuddyNext) can mirror Career Board notifications.

Compat

  • Aligned with WP Career Board 1.4.3. Install both updates together.

v1.4.2

June 1, 2026
Fix 2 Compat 1

Fix

  • Removed the orphaned credit-package catalog. The credit-package admin table, post editor, and /credits/packages REST endpoint were never reachable or consumed - credit purchases run through your active adapter (WooCommerce, PMPro, MemberPress) configured under Settings > Credits. The unused code (and its two drifted meta-key pairs) is gone.
  • Removed a dead tags field from application Kanban cards - it was read but never written, so it was always empty.

Compat

  • Aligned with WP Career Board 1.4.2. Install both updates together.

v1.4.1

June 1, 2026
Dev 1 Compat 1

Dev

  • Same packaging hardening as Free: one .distignore contract with a library-completeness gate. Map blocks bundle the Leaflet library with the plugin instead of loading it from a CDN.

Compat

  • Aligned with WP Career Board 1.4.1. Install both updates together.

v1.4.0

June 1, 2026
New 12 Improve 9 Fix 8 Security 1 Dev 1 Compat 1

New

  • REST endpoints to delete a single notification and to clear all notifications for the current user.
  • AI providers are now chosen per task: pick an analysis & ranking provider (Anthropic Claude on Sonnet, OpenAI, or Ollama) and an embedding/matching provider (OpenAI or Ollama) independently, each with its own API key. Claude now runs on Sonnet.
  • Choose the AI model per provider so you can trade quality for cost: Claude (Haiku / Sonnet / Opus), OpenAI (GPT-4o mini / GPT-4o plus embedding model), and Ollama (model names). Settings > AI Settings.
  • AI applicant ranking: on the Employer Dashboard, rank a job's applicants by AI fit with one click. Each applicant gets a 0-100 fit score and a short reason, sorted best-first. Works with your analysis provider (Claude, OpenAI, or Ollama).
  • AI candidate matches: candidates see a "Recommended for you" set of jobs matched to their resume, and an AI Job Search page is created for natural-language search. Needs an embedding provider (OpenAI or Ollama).
  • Applicant TL;DR: alongside the fit score, each applicant gets a one or two sentence AI summary of their background, shown in the Employer Dashboard list and detail.
  • AI cover-letter writer: candidates generate a tailored cover letter from their resume and the job in the apply panel, then edit it before submitting.
  • Optional "Auto-score applicants on submit" (Settings > AI Settings): new applications are scored in the background so the Employer Dashboard shows AI fit instantly.
  • Custom resume fields: a "Resume Fields" tab in the Field Builder lets admins add their own fields with the same builder used for job and company fields. They render on the resume builder and simple form, save with the resume, and pre-fill on edit. Reuses the existing field-builder - no separate system.
  • Resume privacy controls (Resume Settings): set the candidate directory and single resume profiles to "Public - anyone" or "Logged-in members only", public by default. Resumes are more sensitive than jobs, so site owners can require a free sign-up before browsing or viewing them; candidates still control whether each resume is public.
  • "Index existing jobs" button on AI Settings backfills embeddings for jobs that existed before AI was enabled, so candidate matching works on your current catalog.
  • Installing the demo/sample data now seeds realistic candidate resumes, with demo candidate users, so the candidate side of the demo is populated; removing the sample data deletes them.

Improve

  • Dashboard Notifications panel gains a per-row delete control and a Clear all button alongside Mark all read.
  • Applying with a Resume Builder resume that has no PDF now generates the PDF automatically and attaches it (cached on the resume), so candidates apply in one tap and employers still get a downloadable file.
  • AI fit scores, reasons, and summaries are cached per application, so re-opening the dashboard never re-bills the model; ranking computes only what is missing.
  • Field Builder now lets you edit existing fields (label, type, visibility, required) and rename groups across all entity types; previously fields and groups were create-and-delete only.
  • All resume options now live together under Settings > Resumes: the "Public resume profiles" toggle (publish at /resume/{slug}) moved here from the free Listings tab, alongside max resumes per candidate and the new visibility controls.
  • "Index existing jobs" is now disabled with a clear note when no embedding provider (OpenAI or Ollama) is set, and explains why if you run it, instead of silently reporting "Indexed 0 jobs" - Claude cannot index for matching.
  • The resume "Public" toggle now explains itself: a note tells candidates that public resumes are discoverable by employers in the candidate directory and search, and what staying private means.
  • AI Settings key fields now link to where to get each key (OpenAI, Anthropic) and note that Ollama is free and self-hosted, so admins are not left guessing.
  • The AI job-description generator now returns structured HTML (headings, paragraphs, lists) for a clean, formatted result instead of one block of text.

Fix

  • Resumes imported from WP Job Manager Resumes are no longer blank: get_resume_data() reads the legacy experience/education meta, so the public profile and the PDF render the candidate's full history.
  • AI ranking and matching now read the candidate's resume (the resume-data hook was never connected) and tolerate model replies wrapped in code fences, so fit scores are real instead of always zero.
  • Application Kanban block (advanced custom-stage pipeline): moving a card now saves the stage (it previously fired the change event without saving), the block shows a clear message when no stages are configured instead of loading forever, and it now ships its complete built assets. The everyday applicant board lives in the Employer Dashboard.
  • Downloading a resume PDF no longer fatals when a candidate's skills or languages are stored as plain strings instead of repeater rows. The PDF exporter coerces flat-string entries to the expected shape.
  • Candidate custom fields (Field Builder "Candidate Fields" tab) now appear on the candidate form. They were queried against the candidate's user ID instead of the global board, so they never rendered; candidate fields are global like resume fields.
  • Credits: releasing a hold on approval now returns the actual amount that was held, not the final charge. When the up-front hold was larger than the charged cost, the difference was silently kept and the employer ended up a credit short.
  • Boards admin table no longer renders a doubled border inside its card and aligns to the card gutter.
  • Notifications that pointed at the homepage (created before the dashboard pages were assigned, or for a since-deleted job) now render non-clickable instead of sending you to the home page.

Security

  • AI and map provider API keys are never written back into the settings page HTML. Key fields render empty with a "saved" indicator and update only when you enter a new value, so a stored key is not exposed in the page source.

Dev

  • Removed the legacy single-provider AI options (wcbp_ai_provider / wcbp_ai_api_key / wcbp_ai_base_url). AI reads the per-task provider, key, and model options only.

Compat

  • Aligned with WP Career Board 1.4.0. Install both updates together.

v1.3.0

June 1, 2026
Improve 2 Fix 2 Compat 1

Improve

  • Credits are now opt-in: posting a job is free by default, and a board only charges credits once you set a per-board credit cost. The posting gate and the credit-ledger hold now resolve the cost the same way. Sites that want to charge for posting must set a board credit cost.
  • Resume Builder remove-entry icon renders reliably in the dashboard.

Fix

  • Job Feed settings now save; the "Save Feed Settings" button had been rendered outside its form and submitted nothing.
  • License tab no longer throws JavaScript console errors when activating or deactivating a license, and activation now shows its confirmation notice.

Compat

  • Aligned with WP Career Board 1.3.0. Install both updates together.

v1.2.0

May 1, 2026
New 14 Improve 7 Fix 9 Dev 3 Compat 1

New

  • Single-page resume form (wcb/resume-form-simple block, [wcbp_resume_form_simple] shortcode). Captures headline, summary, top skills, years of experience, location, open-to-work, and profile photo. Sits alongside the existing multi-section resume builder.
  • BuddyPress group-scoped job boards. Every BP group automatically gets a Jobs tab on the group nav listing only that group's jobs. A linked wcb_board is auto-created per group and titles stay in sync.
  • BuddyPress activity stream entries. Approved jobs post to the wcb component (and into the group stream when the job lives on a group board). Hired candidates get a celebratory activity entry too.
  • BuddyPress notifications. New applications appear in the employer's BP bell; application status changes appear in the candidate's bell with localised labels.
  • Member directory filters at /members/. Chips for "Open to work" (members with a public resume marked open) and "Hiring" (members with at least one published job). Filters write directly to BP_User_Query.
  • Tiered credit pricing matrix. Configure per BP member type, PMPro level, or MemberPress membership how many credits each user pays for posting jobs or upgrading to Featured. Cheapest applicable tier wins.
  • Group-scoped job moderation. BP group admins and mods can approve / reject jobs posted to their group's board without holding the global wcb_moderate_jobs capability.
  • Featured upgrade credit consumer. Employers can spend credits to upgrade an existing job to Featured (separate from the posting cost). Pairs with Free's daily cron that auto-clears _wcb_featured after the configured duration.
  • Candidate notifications on application status changes. New component action wcb_app_status_<status> flows into the BP notification bell with localised verbs.
  • Custom resume fields. Declarative wcb_resume_form_fields filter on the resume builder and the new single-page resume form. Same group / field schema as Free's wcb_job_form_fields. New wcb_resume_form_initial_state filter for state extension.
  • Pro-side shortcodes registered for page-builder compatibility: [wcbp_resume_form_simple], [wcbp_resume_archive], [wcbp_credit_balance], [wcbp_job_alerts].
  • Pro-only hook reference at docs/HOOKS.md, cross-linking Free's HOOKS.md as the source of truth for the shared wcb_* filter family.
  • Admin Boards tab now paginates at 20 boards per screen and ships a name search box with a Clear link. The previously flat numberposts=>-1 table is unusable past a screenful of boards.
  • Open to Work and Featured Candidates blocks now render the resume-form profile photo (falls back to an initial-letter chip, never BuddyPress / Gravatar), plus a location row and a years-of-experience badge computed from the earliest experience entry.

Improve

  • Bumped vendored wbcom-credits-sdk to v1.3.0. Server-authoritative pricing resolver closes wbcom-credits-sdk issue #2. Direct-gateway checkout no longer accepts client-supplied price_cents. Career Board Pro is unaffected because all credit purchases route through the WooCommerce / WC Subscriptions / WC Memberships / PMPro / MemberPress adapter paths.
  • Job map block now reads the new {jobs, total, pages, has_more} envelope from /wcb/v1/jobs while remaining backwards-compatible with older Free installs during the upgrade window.
  • Pro CSS uses Free's expanded design token system. Reign, BuddyX, or any theme overriding --wcb-primary now restyles every block in both plugins automatically.
  • Local CI gate via npm run ci. Every commit runs PHP lint, WPCS, and PHPStan before pushing. GitHub Actions removed from Pro by design.
  • Open to Work and Featured Candidates blocks now fall back to skill values stored in _wcb_resume_skills meta when the wcb_resume_skill taxonomy is empty for a given resume, so candidates whose sync hook never ran still show pills.
  • Admin Credits tab now shows a warning banner when a Purchase URL is set but no product is mapped to a positive credit amount, surfacing the misconfiguration that hides the Buy Credits button on the credit-balance block.
  • Open to Work block randomises its candidate order so the widget rotates exposure across everyone open to work, not just the most recent.

Fix

  • Pro setup wizard now auto-triggers on first activation. The wcb_board content fallback that was suppressing the activation redirect has been removed.
  • BuddyPress group Jobs tab now lists only that group's jobs. The listing block was receiving the wrong attribute name and the board filter never fired.
  • BuddyPress group tabs now load the shared frontend stylesheets (wcb_page_needs_frontend_assets filter extended to bp_is_group()) so the .wcb-hidden Interactivity utility resolves. Pre-1.2.0 the Alert me / Alert saved buttons stacked visibly and "Load more / Loading..." artefacts showed on empty group Jobs tabs.
  • Boards picker in the job form hides boards whose linked BuddyPress group the current employer is not a member, mod, or admin of. Site admins still see every board.
  • Credit ledger schema migration. Renamed employer_id to user_id and post_id to item_id to match the canonical wbcom-credits-sdk schema. Pre-1.2.0 the SDK queries silently failed with "Unknown column 'user_id'" and returned a balance of zero. One-shot ALTER TABLE migration runs on activation; existing data is preserved.
  • Buy Credits link on the credit-balance block now hides when a Purchase URL is set but no Credit Mapping points at a positive amount. Pre-fix an employer could complete the order and the adapter would top up zero credits.
  • Resume edit screen no longer fatals when a legacy resume has a non-array entry in a section meta. render_section_row now coerces malformed entries to empty arrays before the strict array $entry signature is reached.
  • my_applications block / [wcbp_my_applications] shortcode now renders as a semantic table with Job / Status / Submitted column headers, an Applicant column when used in employer context, and a mobile card-layout fallback under 480px container width.
  • Boards tab pager URL now builds explicitly from admin_url('admin.php') + array args with the %#% placeholder concatenated outside add_query_arg(), so tab=boards is always preserved and the placeholder cannot get URL-encoded on any WP / PHP combination.

Dev

  • Pro install no longer creates wcb_credit_ledger itself. The SDK's Ledger::maybe_create_table() is the single source of truth for the schema.
  • Convention codified - wcb_* hooks are the stable customer-facing extension surface (work in Free or Pro), wcbp_* hooks are Pro-internal and may change between releases.
  • New public method AbstractEmail::test_send() (Free) gives Pro extensions a clean bridge for previewing disabled email templates without reaching for ReflectionClass.

Compat

  • Requires WP Career Board (Free) 1.2.0 or newer. Install both updates together.

v1.0.2

New 3 Fix 8

New

  • Find Candidates UX parity with Find Jobs** - the resume archive block now mirrors the job-listings chip-bar pattern: `.wcb-listings-header` with a sort select next to the search input, `.wcb-chip-bar` with one pill per skill taxonomy term and an "Open to Work" toggle, and a `.wcb-listings-toolbar` with the results count. Chip filtering runs client-side via a new Interactivity API store (`blocks/resume-archive/view.js`) that toggles visibility per card based on `data-wp-context` carrying `cardSkills`, `cardOpenToWork`, and `cardHaystack`.
  • Reign Theme dark-mode support** - the resume archive, resume single, and every other pro surface re-colors cleanly when Reign's `html.dark-mode` class is active, driven by the token layer in the free plugin's `frontend.css`.
  • BuddyX Pro theme integration** - resume archive, resume single, and all pro blocks inherit BuddyX Pro's theme palette in both light and dark mode via the token bridge in the free plugin's BuddyX Pro compatibility stylesheet.

Fix

  • Resume archive block was shipping with a non-responsive plain search form plus two `<select>` dropdowns - now uses the shared `.wcb-listings-header` / `.wcb-chip-bar` / `.wcb-listings-toolbar` pattern with proper mobile (≤640px) breakpoint and accessibility labels.
  • Resume archive viewScriptModule was missing - `block.json` now declares `"viewScriptModule": "file:./view.js"` and `"supports": { "interactivity": true }`, and a new `view.asset.php` ships the `@wordpress/interactivity` module dependency so WordPress emits the import map correctly. Previously the module loaded as a raw script and errored with `Failed to resolve module specifier "@wordpress/interactivity"`.
  • Resume archive server-side Interactivity processor was applying `wcb-hidden` to every card on first paint because `state.isCardVisible` was undefined - now seeded via `wp_interactivity_state()` with `isCardVisible => true`, `activeSkill => ''`, `openToWorkOnly => false`, etc., so cards render visible on first paint and hydrate into a reactive grid on the client.
  • Resume archive block had a duplicate `<h1>Find Candidates</h1>` - one from the theme entry-title and one from the block's own `.wcb-page-heading`. The new `wcb_app_page_ids` filter now adds `resume_archive_page` to the list of WCB app pages so the free plugin's `.wcb-page .entry-title { display: none !important }` rule correctly suppresses the theme title.
  • Resume archive block CSS hardcoded hex colors on chip bar, search input, sort select, cards, and toolbar - every color now uses `var(--wcb-*, fallback)` so the block flips with dark mode.
  • Resume single block (`.wcb-rs`) re-declared `--wcb-primary`, `--wcb-primary-dark`, `--wcb-border`, and `--wcb-surface` locally via `var(--wp--preset--color--wcb-X)` which were never defined in Reign (shadowing the cascade and preventing `html.dark-mode` overrides from taking effect). Local re-declarations removed, and every `var(--wp--preset--color--wcb-base)` reference replaced with `var(--wcb-base)` so the hero, About, Work Experience, Skills, and Languages cards all flip in dark mode.
  • Pro-owned mapped pages (`resume_archive_page`, `resume_builder_page`) never received the `wcb-page` body class because `add_page_class()` in the free plugin only knew about free page keys. New `wcb_app_page_ids` filter hook in `ProPlugin::add_pro_app_page_ids()` appends pro page IDs so theme-integration CSS that hangs off `.wcb-page` applies uniformly to pro pages.
  • EDD SL SDK `plugins_api_filter` no longer fatals on PHP 8+ when the licensing API call fails and the cache is empty (`Attempt to assign property "plugin" on false`). Mirrors the matching fix shipped in the free plugin.

v1.0.1

Improve 2 Fix 2

Improve

  • PHPStan config optimized with explicit source paths and regenerated baseline.
  • CI pipeline streamlined to PHP Lint + PHPStan.

Fix

  • WPCS formatting cleanup across entire codebase (tabs, braces, spacing).
  • Removed Stripe SDK dependency - credits use WooCommerce adapters only.

v1.0.0

New 10

New

  • Initial release.
  • Application Pipeline - Kanban board with configurable hiring stages.
  • Multi-Board Engine - unlimited independent job boards per install.
  • Resume Builder and resume search.
  • Job Alerts - keyword and location subscriptions.
  • WooCommerce Credit System - credit packages with WooCommerce, PMPro, and MemberPress adapters.
  • Custom Field Builder - custom fields for jobs, companies, and candidates.
  • AI-assisted job description writing.
  • Job Feed - RSS, JSON, and XML feeds per board.
  • License management via EDD Software Licensing.