{"id":400096,"date":"2026-11-10T14:32:31","date_gmt":"2026-11-10T14:32:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/fysiovacature-vacaturewidget\/"},"modified":"2026-11-10T14:32:14","modified_gmt":"2026-11-10T14:32:14","slug":"fysiovacature-vacaturewidget","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/fysiovacature-vacaturewidget\/","author":8201556,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.1.4","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"FysioVacature Vacaturewidget","header_author":"FysioVacature","header_description":"Toon de vacatures van uw praktijk als gewone WordPress-pagina-inhoud, met een shortcode, blok en eigen vormgeving.","last_updated":"2026-11-10 14:32:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/fysiovacature.nl\/vacature-widget","header_author_uri":"https:\/\/fysiovacature.nl\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":48,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.0":{"tag":"1.2.0","author":"Dobbelsoft","date":"2026-11-10 14:32:14","revision":3794574}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":{"fysiovacature\/vacaturewidget":{"name":"fysiovacature\/vacaturewidget","title":"FysioVacature vacatures"}},"tagged_versions":["1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3794574,"resolution":"1","location":"assets","locale":"","width":1414,"height":1815},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3794574,"resolution":"2","location":"assets","locale":"","width":1414,"height":2048},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3794574,"resolution":"3","location":"assets","locale":"","width":1414,"height":873},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3794574,"resolution":"4","location":"assets","locale":"","width":1414,"height":2301},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3794574,"resolution":"5","location":"assets","locale":"","width":390,"height":1160}},"screenshots":{"1":"Practice connection settings, local appearance choices and optional measurement unchecked.","2":"Local embed-code extraction: only the recognized hash is sent when saving settings.","3":"Compact vacancy cards with icons and a short summary; the application button is hidden while collapsed.","4":"Expanded full vacancy description with its application button.","5":"Mobile vacancy cards with wrapping fact badges."}},"plugin_section":[],"plugin_tags":[9023,280911,80,126164,162],"plugin_category":[39,43],"plugin_contributors":[290312],"plugin_business_model":[],"class_list":["post-400096","plugin","type-plugin","status-publish","hentry","plugin_tags-jobs","plugin_tags-physiotherapy","plugin_tags-shortcode","plugin_tags-vacancies","plugin_tags-widget","plugin_category-business","plugin_category-customization","plugin_contributors-dobbelsoft","plugin_committers-dobbelsoft"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/fysiovacature-vacaturewidget.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/fysiovacature-vacaturewidget\/assets\/screenshot-1.jpg?rev=3794574","caption":"Practice connection settings, local appearance choices and optional measurement unchecked."},{"src":"https:\/\/ps.w.org\/fysiovacature-vacaturewidget\/assets\/screenshot-2.jpg?rev=3794574","caption":"Local embed-code extraction: only the recognized hash is sent when saving settings."},{"src":"https:\/\/ps.w.org\/fysiovacature-vacaturewidget\/assets\/screenshot-3.jpg?rev=3794574","caption":"Compact vacancy cards with icons and a short summary; the application button is hidden while collapsed."},{"src":"https:\/\/ps.w.org\/fysiovacature-vacaturewidget\/assets\/screenshot-4.jpg?rev=3794574","caption":"Expanded full vacancy description with its application button."},{"src":"https:\/\/ps.w.org\/fysiovacature-vacaturewidget\/assets\/screenshot-5.jpg?rev=3794574","caption":"Mobile vacancy cards with wrapping fact badges."}],"raw_content":"<!--section=description-->\n<p>FysioVacature Vacaturewidget connects a practice website to the external FysioVacature vacancy service. It displays the practice's published vacancies and, if enabled by the provider, its open-application option. Vacancy content remains centrally managed in FysioVacature. Applications continue on FysioVacature; this plugin does not collect candidate information or create local vacancy posts.<\/p>\n\n<p>An active FysioVacature widget code is required. Request access from https:\/\/fysiovacature.nl\/vacature-widget and obtain your practice's embed code from FysioVacature. Installing this plugin does not activate the provider's service or grant access to another practice's vacancies. Provider access, accounts and commercial terms are separate from this plugin.<\/p>\n\n<p>Paste the 48-character public installation hash into Settings &gt; FysioVacature widget. Pasting a complete embed into that field converts it locally before submission. A separate, unnamed helper field can also extract the hash in the browser. Only the hash is sent to WordPress; pasted script markup is never submitted by these controls or executed. Without JavaScript, enter only the hash. The administration interface is in Dutch.<\/p>\n\n<p>Features:<\/p>\n\n<ul>\n<li>Server-rendered HTML: vacancies and full descriptions are present in the initial page source.<\/li>\n<li>Compact vacancy cards with the same locally bundled two-tone icon set D as the FysioVacature JavaScript widget show available hours, salary, education and contract facts below the title, with local SVG icons and accessible labels. Missing facts are omitted; salary is never invented.<\/li>\n<li>Application buttons for individual vacancies appear only inside expanded descriptions.<\/li>\n<li>Configurable outbound UTM tags distinguish vacancy, application and organization links.<\/li>\n<li>Native details\/summary controls open vacancy descriptions without JavaScript. In current browsers, opening the full description hides its short excerpt; collapsing it restores the excerpt.<\/li>\n<li>Locally bundled styles and installed font choices. No remote widget loader, fonts or images are required.<\/li>\n<li>Saved display settings and per-shortcode display overrides for colors, font, size, heading, count and summary length.<\/li>\n<li>A FysioVacature vacatures editor block and the <code>[fysiovacature_widget]<\/code> shortcode.<\/li>\n<li>A five-minute content cache shared across different display choices. WordPress transients automatically use an active persistent object cache such as Redis.<\/li>\n<li>Clear empty\/error states and an administrator-initiated connection check.<\/li>\n<li>A fictional local styling preview that does not contact the provider.<\/li>\n<li>An optional practice-profile link below the widget, OFF by default. Vacancy source and application links provide the actual service routes.<\/li>\n<li>Optional usage measurement, OFF by default. Only opting in adds the local measurement script.<\/li>\n<li>An ItemList describing the visible vacancies. No JobPosting markup on this overview and no changes to the host page's canonical tag or other plugins' structured data.<\/li>\n<\/ul>\n\n<p>The server parses the provider's HTML response as vacancy data, strips unapproved markup and rebuilds the display using local PHP templates and CSS. The provider's returned CSS and JavaScript are not executed. The PHP DOM extension is required. The plugin does not require the PHP mbstring extension beyond WordPress core compatibility functions.<\/p>\n\n<p>Salary facts come only from explicit salary statements in the published vacancy text. An explicit labeled amount is preferred; the phrase Marktconform salaris may be shortened to Marktconform. Missing or unknown salaries are omitted, never estimated. Hours, education and contract facts are read from the provider's published vacancy details.<\/p>\n\n<p>The locally bundled SVG paths were generated with AI assistance for this project and are distributed with the plugin under GPL-2.0-or-later to the extent applicable rights exist. They are not loaded from an external icon library; see assets\/README.txt for asset provenance.<\/p>\n\n<h4>External service: FysioVacature<\/h4>\n\n<p>Provider: FysioVacature, https:\/\/fysiovacature.nl\/.<\/p>\n\n<p>Purpose: obtain the current published vacancies belonging to the configured practice, the permitted open-application option and source\/application links. A working service and valid provider-issued code are necessary.<\/p>\n\n<p>The WordPress server requests <code>https:\/\/fysiovacature.nl\/widgets\/vacatures\/{hash}<\/code> when a displayed widget needs uncached data, during the five-minute scheduled refresh, or after an administrator explicitly clicks Koppeling controleren. Installing or activating an unconfigured plugin makes no provider request. Opening settings uses cached status and a fictional local preview, without initiating a request.<\/p>\n\n<p>These HTTPS requests disclose the web server's IP address, public widget hash and technical request metadata. The plugin uses a fixed plugin\/version User-Agent, sends no visitor cookies or credentials, and does not send the visitor's IP address or embedding page URL in this server request. The service response includes public vacancy data and may contain a signed measurement receipt. The sanitized response is cached on the WordPress site.<\/p>\n\n<p>With measurement OFF, the plugin makes no browser request to FysioVacature to render or expand vacancies. Clicking a source\/application link is a separate, visitor-initiated navigation to FysioVacature.<\/p>\n\n<p>Service information and access: https:\/\/fysiovacature.nl\/vacature-widget\nProvider privacy statement: https:\/\/fysiovacature.nl\/privacy-statement\nProvider terms: https:\/\/fysiovacature.nl\/voorwaarden<\/p>\n\n<h4>Optional usage measurement<\/h4>\n\n<p>Measurement is OFF by default and is not required to display vacancies. An administrator must explicitly select the optional measurement checkbox and save to enable it. Block or shortcode display choices cannot enable it.<\/p>\n\n<p>When enabled on a public widget, the locally bundled <code>assets\/metrics.js<\/code> may send requests directly from the visitor's browser to <code>https:\/\/fysiovacature.nl\/widgets\/vacatures\/{hash}\/events<\/code>. The payload contains the service-issued signed receipt, an event type (view, expand, apply, open_apply or organization) and a vacancy ID where relevant. It helps FysioVacature understand widget use and improve the service. The loader does not send a separate page URL or visitor identifier. It omits browser credentials and the referrer and respects Do Not Track and Global Privacy Control. The provider necessarily receives browser IP\/network metadata for this direct connection. Browser behavior and hosting logs are outside the plugin.<\/p>\n\n<p>The plugin sets no cookies and creates no visitor profiles. It does not guarantee that all themes, other plugins or provider hosting do the same. Disabling measurements stops this plugin's measurement script on newly rendered pages, not records already received by FysioVacature. Clear page\/CDN\/optimization caches after a privacy change; previously cached or already open pages can retain the old choice until refreshed. Contact the provider about retained records.<\/p>\n\n<h4>Outbound UTM tags<\/h4>\n\n<p>UTM tags are ON by default for links to FysioVacature. Settings &gt; FysioVacature widget lets administrators disable them or edit source, medium and campaign. A blank source uses the practice website domain, with medium <code>widget<\/code> and campaign <code>fysiovacature<\/code> by default. The content parameter distinguishes vacancy, application, open application and organization links. Existing unrelated query parameters are preserved. ItemList source URLs remain clean.<\/p>\n\n<p>These tags accompany a visitor-initiated click to FysioVacature. They identify the referring website and link type, not an individual visitor. They do not initiate background requests or enable the separate optional measurement script. A shortcode cannot override this site-wide choice. Review tags and privacy information for your website; clear page\/optimization caches after changing them.<\/p>\n\n<h4>Cache and availability<\/h4>\n\n<p>The plugin caches sanitized vacancy data for five minutes. A bounded five-second request timeout and a brief error cache limit repeated failed requests. A scheduled refresh uses WP-Cron and therefore depends on site traffic or a configured server cron. The plugin does not keep expired vacancy data as an indefinite outage fallback. On service failure it offers a source link.<\/p>\n\n<p>Full-page, hosting and CDN caches are separate and can keep an earlier vacancy list or measurement choice for longer. Configure a suitable expiry for your vacancy page and purge these caches when vacancies or privacy settings change. An already served page does not live-refresh. Color\/font changes are local and do not create extra service-cache variants. Installed fonts are used without downloading external font files.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Obtain an active widget embed code for your practice from FysioVacature.<\/li>\n<li>Upload this plugin's ZIP using Plugins &gt; Add New Plugin &gt; Upload Plugin. Install and activate it.<\/li>\n<li>Open Settings &gt; FysioVacature widget. Paste your embed code or hash, choose display settings and save. Saving an active hash configures the documented external service connection. Leave optional usage measurement unchecked unless you want it.<\/li>\n<li>Click Koppeling controleren to check the saved connection and warm the cache.<\/li>\n<li>Add the FysioVacature vacatures block or place <code>[fysiovacature_widget]<\/code> in a Shortcode block. In the classic editor, put it on a separate line; in a page builder, use a Shortcode element.<\/li>\n<li>Publish\/update the page and inspect the public result. Clear any page or optimization cache after changes.<\/li>\n<\/ol>\n\n<p>Once this plugin is accepted and published in the WordPress.org directory, it can also be installed by searching for its name under Plugins &gt; Add New Plugin. This package does not claim directory approval.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20the%20same%20as%20pasting%20the%20provider%27s%20javascript%20embed%3F\"><h3>Is this the same as pasting the provider's JavaScript embed?<\/h3><\/dt>\n<dd><p>No. The original embed downloads and constructs the widget in the visitor's browser. This plugin retrieves vacancy data on the WordPress server and renders HTML and local CSS. Vacancy text and native expand controls work with JavaScript disabled. The editor\/settings UI uses local JavaScript; public measurement adds local JavaScript only after opt-in.<\/p><\/dd>\n<dt id=\"where%20is%20the%20unique%20hash%20used%3F\"><h3>Where is the unique hash used?<\/h3><\/dt>\n<dd><p>It is stored in this site's plugin settings and selects the provider's practice-specific public endpoint. It is a public installation code, not your FysioVacature account password. No example practice code is bundled or configured by default.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20one%20instance%3F\"><h3>Can I customize one instance?<\/h3><\/dt>\n<dd><p>Yes, for example <code>[fysiovacature_widget font=\"georgia\" size=\"18\" accent=\"#007aa1\" count=\"3\"]<\/code>. Supported display attributes: title, font, size, accent, text, background, count, words, open and profile. Set profile=\"1\" to show the optional practice-profile link; its default is off. Unspecified fields use saved settings. Accepted fonts: inherit, system, arial, verdana, georgia, tahoma and trebuchet. Background can be transparent or a hex color. Values are bounded and validated. A shortcode cannot change the hash, enable measurements or override the site-wide UTM settings.<\/p><\/dd>\n<dt id=\"why%20are%20no%20vacancies%20shown%3F\"><h3>Why are no vacancies shown?<\/h3><\/dt>\n<dd><p>Check the saved connection, active provider access and PHP DOM extension. Your practice may have no currently published vacancies. Open applications appear only if the provider permits them and your local setting allows them. If no vacancies are published, the widget explicitly says so.<\/p><\/dd>\n<dt id=\"does%20this%20create%20google%20jobs%20markup%20or%20change%20canonical%20tags%3F\"><h3>Does this create Google Jobs markup or change canonical tags?<\/h3><\/dt>\n<dd><p>No. It emits an ItemList for the currently displayed vacancies, excluding open applications and empty\/error states. Source links point to FysioVacature vacancy pages. It does not add JobPosting or replace a page canonical. Search ranking or rich-result appearance is not guaranteed.<\/p><\/dd>\n<dt id=\"is%20multisite%20supported%3F\"><h3>Is Multisite supported?<\/h3><\/dt>\n<dd><p>This first version targets ordinary single-site installations; network activation and network-wide cleanup have not been tested.<\/p><\/dd>\n<dt id=\"how%20do%20i%20remove%20it%3F\"><h3>How do I remove it?<\/h3><\/dt>\n<dd><p>Remove blocks\/shortcodes from pages, then deactivate and delete the plugin. Uninstall removes the plugin settings, current cache and scheduled task. It does not edit page content or erase provider records.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Match the renewed FysioVacature widget with locally bundled two-tone fact icons (set D), responsive cards and accessible field labels.<\/li>\n<li>Preserve the short collapsed summary, full expanded text and individual application button only inside the expanded vacancy.<\/li>\n<li>Keep configurable outbound UTM tags, optional usage measurement OFF by default, and clean structured-data source URLs.<\/li>\n<li>Make the additional practice-profile footer link optional and OFF by default.<\/li>\n<li>Document external-service access, salary extraction, icon provenance and GPL-compatible distribution for directory review.<\/li>\n<li>Remove an unnecessary dependency on native mbstring functions for ASCII fact labels and periods.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Queue widget CSS in the page head when the queried page contains the shortcode or block, so separately rendered mobile content uses the same disclosure states and styling.<\/li>\n<li>Retain the render-time stylesheet fallback for widgets placed outside normal page content.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Prevent host-theme list margins from stretching the last vacancy fact badge. Keep fact badges aligned at their natural height, including when wrapping.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Add responsive vacancy cards with local SVG icons for available hours, salary, education and contract information.<\/li>\n<li>Retain the collapsed short summary; show the application button only inside the expanded vacancy.<\/li>\n<li>Add configurable, disableable UTM tags to outbound service links without changing structured-data source URLs or enabling usage measurements.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Replace the visible short excerpt with the full description when expanded, restoring it on collapse, using local CSS and native details controls.<\/li>\n<li>Change the open control label to Vacature inklappen. No executable frontend script is needed for this behavior in current browsers.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Extract pasted embed codes locally before saving. Submit only the public installation hash, avoiding unnecessary script markup in settings requests that can trigger a firewall.<\/li>\n<li>Add an optional unnamed local extraction field and native validation for the hash input. No firewall rules or security settings are changed.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial submission package: server rendering, five-minute cache, native expansion, local styling, shortcode\/block and optional measurement disabled by default.<\/li>\n<\/ul>","raw_excerpt":"Display your practice's FysioVacature jobs as server-rendered WordPress content, with local styling, a block and a shortcode. Metrics are optional.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/400096","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=400096"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dobbelsoft"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=400096"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=400096"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=400096"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=400096"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=400096"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=400096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}