WP Manifestindependent plugin directory
manifest / integrations / vismaxmlimport

VismaXMLImport

Imports job listings from a Visma Recruit XML feed into the "job-listing" post type. No external dependencies.

by Consid · github.com/considbrs-webdev/vismaxmlimport

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/considbrs-webdev/vismaxmlimport/archive/refs/heads/main.zip

Readme

VismaXMLImport

WordPress plugin that imports job assignments from a Visma Recruit XML feed into the job-listing post type. It has no external dependencies (no Composer, no ACF, no jq).

Author: Consid

Installation

Copy the plugin folder into wp-content/plugins/ and activate it.

Configuration

Go to Tools → Visma XML import and set:

  • XML feed URL – the public Visma Recruit XML endpoint.
  • Schedule – how often the import should run automatically (uses WP-Cron). Choose Never to only run manually.

The page also has Run now and Dry run buttons. A dry run reports what would change without writing anything.

What gets imported

Every <Assignment> in the feed becomes one lediga-jobb post.

Post field Source
post_title Localization/AssignmentLoc/AssignmentTitle
post_content Localization/AssignmentLoc/AdDescription
post_date PublishStartDate (feed dates are treated as UTC)
post_status publish if PublishStartDate has passed, otherwise trash

Post meta:

Meta key Source
job_publish_start_date PublishStartDate
job_application_end_date ApplicationEndDate
job_employment_start_date EmploymentStartDate
job_employment_start_date_descr EmploymentStartDateDescr
job_external_url Visma apply URL built from Guid
job_number_of_positions NumberOfJobs (integer)
job_employment_type EmploymentType/Name
job_employment_grade EmploymentGrade/Name
job_salary_type SalaryType/Name
job_location_name Municipality/Name
job_departments Departments with Level 2, as [{name}]
job_contacts Contact persons, as [{name, phone, position}]
schemaData Municipio JobPosting schema array (see below)

Occupation classifications with Level 1 are assigned as lediga-jobb-category terms and created if missing. Terms are only assigned when the taxonomy is registered by the theme.

Municipio schemaData (JobPosting)

Each imported post also gets a PHP array in meta key schemaData so Municipio’s $post->getSchemaProperty() works. It is not stored as a JSON string.

Schema property Source
@type JobPosting
@id Visma Guid
title AssignmentTitle
description AdDescription
url Visma apply URL
datePosted PublishStartDate (ISO-8601 UTC)
validThrough ApplicationEndDate (ISO-8601 UTC)
employmentType EmploymentType/Name
employmentUnit.name First level-2 department
employmentUnit.address.addressLocality Municipality/Name
applicationContact[] Contact persons (name, telephone, contactType)
relevantOccupation[] Level-1 occupation classifications

Sync behaviour

Each assignment is tracked by its Guid, stored in the vxi_id post meta. A hash of the mapped payload is stored in vxi_hash, so unchanged assignments are skipped on subsequent runs. Posts that disappear from the feed are moved to the trash.

Read the full README on GitHub →