Descrizione
Multiposter lets you manage and display job vacancies on your WordPress site. Use it as a standalone job board or connect it to the Multiposter platform for automatic vacancy synchronisation.
Features:
- Custom post type for vacancies with detailed meta fields
- Archive page with filters (keyword, position, city, salary range)
- Responsive vacancy cards with thumbnail support
- Built-in application form (API or email submission)
- Favourites system (cookie-based)
- Related vacancies with configurable matching criteria
- Share buttons (LinkedIn, Facebook, X, WhatsApp, Email)
- SEO options with customisable title and description templates
- Open Graph and Twitter Card meta tags
- Configurable pagination and column layouts
- Image gallery with lightbox
- Performance caching with transients
- Gutenberg blocks (archive, latest vacancies, single vacancy, search)
- Full internationalisation support (Dutch translation included)
Standalone Mode:
Without an API key the plugin works fully standalone. Create vacancies manually in the WordPress admin, and applications are delivered via email.
Multiposter Integration:
Enter your Multiposter API key to enable automatic vacancy synchronisation. Vacancies are imported on a configurable schedule and applications can be sent directly to the Multiposter API.
Source code
The full, non-minified source code for this plugin (including the un-compiled JavaScript for the Gutenberg blocks) is publicly available at:
https://github.com/mooxnl/multiposter-wp-plugin
The compiled block scripts shipped under assets/js/blocks/ are generated from the matching files in src/blocks/ using @wordpress/scripts.
To build the block assets locally:
- Clone the repository.
- Install dependencies:
npm install - Build the production bundles:
npm run build - For development with file watching:
npm run start
The build writes the compiled JavaScript and *.asset.php files to assets/js/blocks/.
External services
This plugin connects to external services under specific conditions. The plugin is fully functional in standalone mode without contacting any of these services.
Multiposter API (app.jobit.nl)
Used to synchronize vacancies and, optionally, to submit job applications and candidate registrations. Only contacted when a Multiposter API key is configured in the plugin settings.
- What is sent — vacancy synchronisation: the configured API key and vacancy fetch parameters (channel ID, page, limit). No visitor data.
- What is sent — application form submissions (when “API” or “API and email” is selected for the application form): the configured API key and the form fields the visitor provides (name, email, phone, message, uploaded CV, vacancy ID).
- What is sent — registration form submissions (when “API” or “API and email” is selected for the registration form): the configured API key and the form fields the visitor provides (first name, last name, email, phone, motivation, optional uploaded CV).
- When it is sent: on the scheduled vacancy sync interval, on manual re-sync from the admin screen, when a visitor submits the application form, and when a visitor submits the registration form.
- Endpoints contacted:
https://app.jobit.nl/api/vacancies/channel/{channel_id}(vacancy sync) andhttps://app.jobit.nl/api/candidates(job applications and candidate registrations, distinguished by atypefield in the request body). - Service: operated by Multiposter.
- Terms of service: https://multiposter.nl/informatie/voorwaarden
- Privacy policy: https://multiposter.nl/informatie/privacy-policy
Social share endpoints
The share buttons rendered on single vacancy pages link to external share URLs provided by LinkedIn, Facebook, X (Twitter), WhatsApp and the visitor’s own mail client. No data is transmitted automatically; data is only sent if a visitor clicks a share button and uses the resulting page.
- LinkedIn: https://www.linkedin.com/legal/user-agreement / https://www.linkedin.com/legal/privacy-policy
- Facebook: https://www.facebook.com/legal/terms / https://www.facebook.com/policy.php
- X (Twitter): https://x.com/tos / https://x.com/privacy
- WhatsApp: https://www.whatsapp.com/legal/terms-of-service / https://www.whatsapp.com/legal/privacy-policy
Blocchi
Questo plugin fornisce 9 blocchi.
- Vacancy Archive
- Latest Vacancies
- Single Vacancy
- Vacancy Search
- Application Form
- Vacancy Image Grid
- Share Buttons
- Related Vacancies
- Registration Form
Installazione
- Upload the
multiposterfolder to/wp-content/plugins/. - Activate the plugin through the ‘Plugins’ menu in WordPress.
- Go to Multiposter > Settings to configure the plugin.
- (Optional) Enter your Multiposter API key to enable automatic sync.
- Visit Settings > Permalinks and click “Save Changes” to register the vacancy URL slug.
FAQ
-
Do I need a Multiposter account?
-
No. The plugin works standalone without an API key. You can create and manage vacancies directly in WordPress.
-
How do applications work without an API key?
-
Applications are sent via email to the configured notification address, or to the site admin email as a fallback.
Contributi e sviluppo
“Jobit Vacancies for Multiposter” è un software open source. Le persone che hanno contribuito allo sviluppo di questo plugin sono indicate di seguito.
CollaboratoriTraduci “Jobit Vacancies for Multiposter” nella tua lingua.
Ti interessa lo sviluppo?
Esplora il codice segui il repository SVN, segui il log delle modifiche tramite RSS.
Changelog
2.5
- Fix: the archive filter spinner kept loading after switching to
wp_send_jsonin 2.3. jQuery now receives an already-parsed object on theapplication/jsonresponse, so the success handler no longer callsJSON.parseon it (which produced"[object Object]" is not valid JSON). The handler now accepts either an object or a string for safety.
2.4
- Fix: the 2.2 identifier migration could be skipped on sites where the first admin_init after the upgrade fired without
manage_options(editor-role user, custom roles, AJAX/cron contexts), leaving vacancies stored under the legacyvacaturespost type and invisible in admin and on the front-end. The migration now re-checks for legacyvacatures/cities/positionrows on every admin page load and renames any that remain, regardless of whether themultiposter_migration_v22flag was previously set - Fix: bust the posts and terms object-cache
last_changedkeys after the migration so cached query results pick up the renamed post type and taxonomies immediately
2.3
- Security: escape forward slashes in the JobPosting JSON-LD output so vacancy fields containing
</script>cannot break out of the schema<script>tag - Switched the archive AJAX handler to
wp_send_jsonand now caches the response as a structured array instead of a raw JSON string - Removed the unprefixed
[jobs_archive]and[job_single]shortcode aliases — please update existing pages to use[multiposter_archive]and[multiposter_single]
2.2
- Renamed text domain to match the WordPress.org plugin slug
- Prefixed custom post type, taxonomies and shortcodes with
multiposter_to avoid collisions - Added one-time migration that updates existing posts and terms on first admin load after upgrade — no manual action required
- Hardened API-key sanitization, escaped vacancy title in the
the_contentfilter callback, moved the inline admin loading-overlay style into the enqueued stylesheet - Documented the candidate registration endpoint and the public source repository in the readme
2.1
- Documented external services (Multiposter API, social share endpoints)
- Switched JSON responses to wp_json_encode
- Hardened output escaping on share buttons and admin settings tabs
- Corrected contributor username
2.0
- Added standalone mode (manual vacancy creation)
- Added application form email fallback
- Added security nonces to all AJAX handlers
- Added uninstall cleanup
- WordPress.org directory compliance
1.1
- Added Dutch date formatting
- Local font support
1.0
- Initial release
