{"id":294977,"date":"2026-05-22T08:07:29","date_gmt":"2026-05-22T08:07:29","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/multiposter\/"},"modified":"2026-05-22T08:07:00","modified_gmt":"2026-05-22T08:07:00","slug":"jobit-vacancies-for-multiposter","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/jobit-vacancies-for-multiposter\/","author":23472831,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.3","stable_tag":"2.3","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Jobit Vacancies for Multiposter","header_author":"Multiposter","header_description":"Publiceer jouw vacatures vanuit Multiposter op je eigen WordPress website.","assets_banners_color":"","last_updated":"2026-05-22 08:07:00","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/multiposter.nl","rating":0,"author_block_rating":0,"active_installs":0,"downloads":22,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.3":{"tag":"2.3","author":"multiposternl","date":"2026-05-22 08:07:00"}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":{"multiposter\/vacancy-archive":{"name":"multiposter\/vacancy-archive","title":"Vacancy Archive"},"multiposter\/latest-vacancies":{"name":"multiposter\/latest-vacancies","title":"Latest Vacancies"},"multiposter\/single-vacancy":{"name":"multiposter\/single-vacancy","title":"Single Vacancy"},"multiposter\/vacancy-search":{"name":"multiposter\/vacancy-search","title":"Vacancy Search"},"multiposter\/application-form":{"name":"multiposter\/application-form","title":"Application Form"},"multiposter\/vacancy-images":{"name":"multiposter\/vacancy-images","title":"Vacancy Image Grid"},"multiposter\/share-buttons":{"name":"multiposter\/share-buttons","title":"Share Buttons"},"multiposter\/related-vacancies":{"name":"multiposter\/related-vacancies","title":"Related Vacancies"},"multiposter\/registration-form":{"name":"multiposter\/registration-form","title":"Registration Form"}},"tagged_versions":["2.3"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[8107,9023,9021,126164,263944],"plugin_category":[39],"plugin_contributors":[263945],"plugin_business_model":[],"class_list":["post-294977","plugin","type-plugin","status-publish","hentry","plugin_tags-job-board","plugin_tags-jobs","plugin_tags-recruitment","plugin_tags-vacancies","plugin_tags-vacatures","plugin_category-business","plugin_contributors-multiposternl","plugin_committers-multiposternl"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/jobit-vacancies-for-multiposter.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>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.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Custom post type for vacancies with detailed meta fields<\/li>\n<li>Archive page with filters (keyword, position, city, salary range)<\/li>\n<li>Responsive vacancy cards with thumbnail support<\/li>\n<li>Built-in application form (API or email submission)<\/li>\n<li>Favourites system (cookie-based)<\/li>\n<li>Related vacancies with configurable matching criteria<\/li>\n<li>Share buttons (LinkedIn, Facebook, X, WhatsApp, Email)<\/li>\n<li>SEO options with customisable title and description templates<\/li>\n<li>Open Graph and Twitter Card meta tags<\/li>\n<li>Configurable pagination and column layouts<\/li>\n<li>Image gallery with lightbox<\/li>\n<li>Performance caching with transients<\/li>\n<li>Gutenberg blocks (archive, latest vacancies, single vacancy, search)<\/li>\n<li>Full internationalisation support (Dutch translation included)<\/li>\n<\/ul>\n\n<p><strong>Standalone Mode:<\/strong><\/p>\n\n<p>Without an API key the plugin works fully standalone. Create vacancies manually in the WordPress admin, and applications are delivered via email.<\/p>\n\n<p><strong>Multiposter Integration:<\/strong><\/p>\n\n<p>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.<\/p>\n\n<h3>Source code<\/h3>\n\n<p>The full, non-minified source code for this plugin (including the un-compiled JavaScript for the Gutenberg blocks) is publicly available at:<\/p>\n\n<p>https:\/\/github.com\/mooxnl\/multiposter-wp-plugin<\/p>\n\n<p>The compiled block scripts shipped under <code>assets\/js\/blocks\/<\/code> are generated from the matching files in <code>src\/blocks\/<\/code> using <code>@wordpress\/scripts<\/code>.<\/p>\n\n<p>To build the block assets locally:<\/p>\n\n<ol>\n<li>Clone the repository.<\/li>\n<li>Install dependencies: <code>npm install<\/code><\/li>\n<li>Build the production bundles: <code>npm run build<\/code><\/li>\n<li>For development with file watching: <code>npm run start<\/code><\/li>\n<\/ol>\n\n<p>The build writes the compiled JavaScript and <code>*.asset.php<\/code> files to <code>assets\/js\/blocks\/<\/code>.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to external services under specific conditions. The plugin is fully functional in standalone mode without contacting any of these services.<\/p>\n\n<p><strong>Multiposter API (app.jobit.nl)<\/strong><\/p>\n\n<p>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.<\/p>\n\n<ul>\n<li>What is sent \u2014 vacancy synchronisation: the configured API key and vacancy fetch parameters (channel ID, page, limit). No visitor data.<\/li>\n<li>What is sent \u2014 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).<\/li>\n<li>What is sent \u2014 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).<\/li>\n<li>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.<\/li>\n<li>Endpoints contacted: <code>https:\/\/app.jobit.nl\/api\/vacancies\/channel\/{channel_id}<\/code> (vacancy sync) and <code>https:\/\/app.jobit.nl\/api\/candidates<\/code> (job applications and candidate registrations, distinguished by a <code>type<\/code> field in the request body).<\/li>\n<li>Service: operated by Multiposter.<\/li>\n<li>Terms of service: https:\/\/multiposter.nl\/informatie\/voorwaarden<\/li>\n<li>Privacy policy: https:\/\/multiposter.nl\/informatie\/privacy-policy<\/li>\n<\/ul>\n\n<p><strong>Social share endpoints<\/strong><\/p>\n\n<p>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.<\/p>\n\n<ul>\n<li>LinkedIn: https:\/\/www.linkedin.com\/legal\/user-agreement \/ https:\/\/www.linkedin.com\/legal\/privacy-policy<\/li>\n<li>Facebook: https:\/\/www.facebook.com\/legal\/terms \/ https:\/\/www.facebook.com\/policy.php<\/li>\n<li>X (Twitter): https:\/\/x.com\/tos \/ https:\/\/x.com\/privacy<\/li>\n<li>WhatsApp: https:\/\/www.whatsapp.com\/legal\/terms-of-service \/ https:\/\/www.whatsapp.com\/legal\/privacy-policy<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>multiposter<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Go to Multiposter &gt; Settings to configure the plugin.<\/li>\n<li>(Optional) Enter your Multiposter API key to enable automatic sync.<\/li>\n<li>Visit Settings &gt; Permalinks and click \"Save Changes\" to register the vacancy URL slug.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20multiposter%20account%3F\"><h3>Do I need a Multiposter account?<\/h3><\/dt>\n<dd><p>No. The plugin works standalone without an API key. You can create and manage vacancies directly in WordPress.<\/p><\/dd>\n<dt id=\"how%20do%20applications%20work%20without%20an%20api%20key%3F\"><h3>How do applications work without an API key?<\/h3><\/dt>\n<dd><p>Applications are sent via email to the configured notification address, or to the site admin email as a fallback.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.3<\/h4>\n\n<ul>\n<li>Security: escape forward slashes in the JobPosting JSON-LD output so vacancy fields containing <code>&lt;\/script&gt;<\/code> cannot break out of the schema <code>&lt;script&gt;<\/code> tag<\/li>\n<li>Switched the archive AJAX handler to <code>wp_send_json<\/code> and now caches the response as a structured array instead of a raw JSON string<\/li>\n<li>Removed the unprefixed <code>[jobs_archive]<\/code> and <code>[job_single]<\/code> shortcode aliases \u2014 please update existing pages to use <code>[multiposter_archive]<\/code> and <code>[multiposter_single]<\/code><\/li>\n<\/ul>\n\n<h4>2.2<\/h4>\n\n<ul>\n<li>Renamed text domain to match the WordPress.org plugin slug<\/li>\n<li>Prefixed custom post type, taxonomies and shortcodes with <code>multiposter_<\/code> to avoid collisions<\/li>\n<li>Added one-time migration that updates existing posts and terms on first admin load after upgrade \u2014 no manual action required<\/li>\n<li>Hardened API-key sanitization, escaped vacancy title in the <code>the_content<\/code> filter callback, moved the inline admin loading-overlay style into the enqueued stylesheet<\/li>\n<li>Documented the candidate registration endpoint and the public source repository in the readme<\/li>\n<\/ul>\n\n<h4>2.1<\/h4>\n\n<ul>\n<li>Documented external services (Multiposter API, social share endpoints)<\/li>\n<li>Switched JSON responses to wp_json_encode<\/li>\n<li>Hardened output escaping on share buttons and admin settings tabs<\/li>\n<li>Corrected contributor username<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Added standalone mode (manual vacancy creation)<\/li>\n<li>Added application form email fallback<\/li>\n<li>Added security nonces to all AJAX handlers<\/li>\n<li>Added uninstall cleanup<\/li>\n<li>WordPress.org directory compliance<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Added Dutch date formatting<\/li>\n<li>Local font support<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Publish vacancies on your WordPress website. Works standalone or integrated with Multiposter.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/294977","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=294977"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/multiposternl"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=294977"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=294977"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=294977"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=294977"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=294977"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=294977"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}