Apqrinu Job Board

Add a full job board to WordPress — listings, filters, apply form, and SEO schema. Zero dependencies.

v1.0.0 WordPress 6.0+ PHP 7.4+ GPLv2
View on GitHub
Contributors: apqrinu Tested up to: 6.9 Stable tag: 1.0.0 License: GPLv2 or later

Features

A complete, self-contained job board — no ACF, no page builder, no third-party framework required.

Custom post type Job with native meta fields — no ACF dependency.
Taxonomies: Job Type, Work Mode, Experience Level, Location.
Frontend archive with AJAX filtering, pushState URLs, and bookmarkable pagination.
Related jobs section on single job pages with AJAX pager.
Built-in apply form with AJAX submission, honeypot anti-spam, optional resume upload, and admin email notification.
Drop-in support for Fluent Forms, WPForms, Contact Form 7, Gravity Forms, Forminator via shortcode setting.
Per-job override email and external application URL.
Applications stored as a private post type for easy admin review.
JobPosting JSON-LD on single job pages for structured SEO data.
Theme template overrides via your-theme/apqrinu-job-board/.
Settings page for per-page count, currency, default email, expired-job hiding.
Color picker for primary, hover, text, card, border, and meta colors — applied via CSS variables.
Toggles for the related-jobs section — show/hide globally or when empty.
Modal apply experience with blurred backdrop and full-screen layout on mobile.
Translation-ready (apqrinu-job-board text domain) with wpml-config.xml for WPML / Polylang.

Shortcodes

Three shortcodes let you embed job board components anywhere on your site — pages, posts, or widgets.

1. Job Listings Archive

Renders the full archive with AJAX filters and pagination. Drop it on any page.

[apqrinu_listings]

2. Related Jobs

Shows jobs related by taxonomy. If no job_id is supplied, it defaults to the current single job page.

[apqrinu_related job_id="123"]

3. Apply Form

Embeds the application form for a specific job. Can be placed outside of the job template.

[apqrinu_apply_form job_id="123"]

Installation

1
Upload the apqrinu-job-board folder to /wp-content/plugins/ on your server.
2
Activate Apqrinu Job Board through the Plugins menu in your WordPress admin.
3
Go to Jobs → Settings to configure per-page count, currency symbol, and the default notification email.
4
Add your first job via Jobs → Add New. All fields are in the native Job Details metabox — no extra plugins needed.

Configuration

Navigate to Jobs → Settings to manage global plugin options.

Option Description
jobs_per_pageNumber of jobs shown per page in the listings archive.
currencyCurrency code and symbol used across all salary displays.
default_emailFallback email for application notifications when no per-job email is set.
hide_expiredAutomatically hide jobs after their deadline date.
default_apply_shortcodeSite-wide default form shortcode (overridden per-job).
show_relatedToggle the related-jobs section globally on/off.
hide_related_emptyHide the related-jobs section when no similar jobs are found.
Color pickerSet primary, hover, text, card, border, and meta colors. Applied site-wide as CSS variables.

Apply Form

The built-in apply form uses AJAX submission, a honeypot anti-spam field, optional resume upload, and sends email notifications to the configured address. Applications are stored as private apqrinu_application posts visible only to admins under Jobs → Applications.

Third-Party Form Integrations

Replace the built-in form with any shortcode-based form plugin — per job or site-wide.

Per job: Open the job in the editor, scroll to Job Details → Apply Form Shortcode, and paste your shortcode:

[fluentform id="3"]
[wpforms id="123"]
[contact-form-7 id="456"]
[gravityforms id="2"]

Site-wide default: Go to Jobs → Settings → Default Apply Form Shortcode and paste a shortcode to use for every job that doesn't define its own.

Resolution priority

  1. External URL — set on the job; the Apply button links directly and the form is skipped entirely.
  2. Per-job shortcode — set in the Job Details metabox; overrides the default for that job only.
  3. Global default shortcode — set in Settings; applies to every job without a per-job shortcode.
  4. Built-in form — the default fallback when none of the above are configured.

Theme Overrides

Every template file can be overridden from your theme without touching the plugin source — updates won't overwrite your customizations.

How to override a template

Copy the file from the plugin's template directory:

wp-content/plugins/apqrinu-job-board/templates/

To your theme directory, preserving the exact relative path:

wp-content/themes/your-theme/apqrinu-job-board/

Example

To override the job card partial:

# Source
wp-content/plugins/apqrinu-job-board/templates/parts/job-card.php

# Destination (your theme)
wp-content/themes/your-theme/apqrinu-job-board/parts/job-card.php
Tip: The plugin checks your theme directory first on every request. You only need to copy files you actually want to modify.

Multilingual (WPML / Polylang)

The plugin ships a wpml-config.xml at its root that registers the Job CPT and all four taxonomies as translatable content. Dynamic plugin options are exposed in WPML's String Translation UI under the apqrinu_settings admin-text key.

Translatable fields

  • Job summary
  • Company name
  • Per-job apply form shortcode
  • All four taxonomies (Job Type, Work Mode, Experience Level, Location)

Copied across translations

  • Application deadline (date)
  • Salary (min / max)
  • Job status
  • External application URL

FAQ

No. All custom fields are native WordPress meta with a built-in metabox. There are no third-party dependencies whatsoever.
Each application is stored as a private apqrinu_application post, visible only to administrators under Jobs → Applications. An email notification is also sent to the per-job override address, the global default email, or the site admin — in that order of priority.
Yes. Set the External Application URL field on the job. The Apply button will link directly to that URL and the built-in form is skipped entirely.
Yes. Paste any shortcode into the Job Details → Apply Form Shortcode field for per-job override, or set a global default in Jobs → Settings → Default Apply Form Shortcode.
Copy any file from templates/ in the plugin directory to your-theme/apqrinu-job-board/, keeping the same relative path. The plugin checks your theme folder first on every request. See the section for a full example.
Yes. The plugin ships a wpml-config.xml at its root that registers the Job CPT, all four taxonomies, and key meta fields with WPML / Polylang for full multilingual support.

Privacy

When a visitor submits the built-in apply form, the following data is stored on your site:

  • Applicant name, email address, phone number (optional), and cover letter message — saved as private apqrinu_application posts, visible only to administrators.
  • Resume file (optional) — uploaded to the WordPress Media Library and attached to the application record.
  • Submitter IP address — saved with each application for spam moderation purposes.

An email notification containing the same data is sent to the per-job address, the global default email, or the site admin — in that order.

The plugin does not send any data to third-party services, does not load remote scripts or fonts, and does not set tracking cookies. Application records and uploaded resumes can be deleted at any time from Jobs → Applications. Uninstalling the plugin removes all stored applications, plugin options, and orphaned job meta.

GDPR / CCPA: If your site is subject to data protection regulations, you are responsible for adding an appropriate disclosure to your privacy policy and for honoring deletion and export requests for the data listed above.

Changelog

v1.0.0

Initial Release

First public release of Apqrinu Job Board. Includes all core features: custom Job CPT, four taxonomies, AJAX archive with filtering, single job pages with related jobs, built-in AJAX apply form with resume upload, third-party form plugin support, JobPosting JSON-LD, theme template overrides, settings page with color picker, and WPML / Polylang compatibility.