Skip to content
Client workPluginReal estateLive

Spolu v realitách: listings on the site with no retyping

A plugin that carries property listings from POSKI REAL into WordPress. Agents enter the data once; the website takes over the listings, photos and parameters by a stable ID.

ClientSpolu v realitách
RoleBrief, development, operation
Data sourcePOSKI REAL XML export
Admin screen for synchronising listings from POSKI
The brief

Two records of the same thing

The agents work in POSKI REAL, because that is where their clients, viewings and documents live. The site, however, runs on WordPress, so every listing was entered twice. Photos were uploaded again and for sold properties the status was often forgotten.

The brief was simple: whatever is in POSKI should be on the site. With no retyping, no duplicates and no change to the look of the site, which is built on Pods and Elementor.

What we delivered

Six parts of one import

Fetching the feed

The plugin downloads the listings export from POSKI REAL on its own. It reads it piece by piece, so even a large export does not bring the server down.

Matching by listing ID

A listing is updated by its POSKI ID, never by name or address. A rewritten headline in WordPress therefore creates no duplicate.

Skipping unchanged records

For every listing the plugin keeps a fingerprint. When nothing has changed, it rewrites nothing, so a run with no changes skips the unchanged records.

Mapping into Pods fields

Layouts, states and other enumerations are matched against the real field definitions, diacritics included. The site stays built on Pods and Elementor.

Photos into the Media Library

Images are imported with deduplication and the main photo is set as the thumbnail. The order from the feed is preserved.

Controls for agents and developers

An agent can run the import by hand, or first have it show what it would change. Otherwise it runs on its own schedule, and a developer can control it from the command line too.

Why this way

Two decisions that save trouble

One direction only, from POSKI to the site

Changes from the site are never sent back to POSKI. The agent has one place to edit a listing, and two records can never overwrite each other.

The import respects the site, not the other way round

Data is mapped into the existing Pods fields, so neither the design nor the Elementor templates had to change. The plugin can be switched off and the site keeps working.

How it ran

From field mapping to operation

Retyping by hand

Listings were retyped into the site from POSKI. With dozens of properties and their photos that was a full day’s work, and the data went stale.

Field mapping

First we sat down over the export and described which element corresponds to which Pods field. Without that the import would only guess.

A safe import

The import reads the export safely, never runs twice at once and can do a dry run, so changes can be seen before they are written.

Operation and diagnostics

Every run is logged, with personal data masked. You can see what the last run did, and when something looks wrong it is quick to find out what value the plugin got from the export.

Technology

A plugin with no dependencies

The plugin has no external dependencies, so a site update does not have to deal with third-party libraries.

Plugin and operation
WordPressPHP 8.1XMLReaderPods FrameworkElementorWP-CronWP-CLICustom PSR-4 autoloader
Scope

The scope of the solution

1×Direction of synchronisation
2Fields the agent fills in by hand
What next

What is still missing

Two fields remain unmapped: the floor plan and the energy performance certificate. The export gives no direct file link for them, so the agent still adds them by hand.

The next round should bring video tours connected to the player and a change log per listing, so it is visible what the last run edited.

Working on something similar?

Tell us what gets entered twice in your company. We reply within two business days.

More projects

What else we built

All projects →