manifest / integrations / easybroker-sync
EasyBroker Sync WP Registry grade A. No security issues foundWP RegistryNo security issues foundOpen the reportA
★ 0stars
8release downloads
v0.6.0latest · 3mo ago
Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/shauncuier/easybroker-sync/releases/download/v0.6.0/easybroker-sync.zipNo built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.
EasyBroker Sync for WordPress
Cross-post WordPress property listings to EasyBroker and pull your own listings back into WordPress for display.
✨ Features
- Push to EasyBroker — Publish or update a WordPress property and it's automatically synced to EasyBroker (and its connected portals).
- Pull from EasyBroker — Import your own EasyBroker listings into a dedicated
eb_propertypost type with full detail (images, pricing, location, etc.). - Custom Post Type —
eb_propertywith Operation, Property Type, and Location taxonomies. - Shortcode —
[eb_properties]to display listings anywhere (filterable by limit, operation, type, collaboration). - Bundled Templates — Archive and single-property templates included; your theme can override them.
- Admin Settings — API key + test connection, currency, agent, image handling, sync frequency, manual sync, and a sync log.
- WP-Cron Scheduling — Automatic sync on a configurable schedule.
- Security Hardened — SSRF protection on image ingestion, rate-limit handling, pre-flight validation, and more.
📥 Installation
From GitHub Releases (recommended)
- Go to the Releases page.
- Download the latest
easybroker-sync.zip. - In WordPress, go to Plugins → Add New → Upload Plugin.
- Choose the downloaded
.zipfile and click Install Now. - Activate the plugin.
Manual
- Clone or download this repository.
- Copy the
easybroker-syncfolder intowp-content/plugins/. - Activate EasyBroker Sync in the Plugins admin page.
⚙️ Configuration
- Go to Properties → EasyBroker Sync in the WordPress admin.
- Enter your EasyBroker API key and click Test connection.
- Alternatively, define
EBS_API_KEYinwp-config.php(recommended for production):define( 'EBS_API_KEY', 'your-api-key-here' );
- Alternatively, define
- Configure currency, image handling, and sync frequency, then Save.
📋 Requirements
- WordPress 6.0+
- PHP 7.4+
- An EasyBroker account with API access
📝 Changelog
0.6.0
- Last-resort property-type inference from title keywords (Spanish + English) for Houzez listings with no type term — "TERRENO…" → Lot, "CASA…" → House, "…APARTMENT" → Apartment, etc. Disable via the
ebs_houzez_infer_type_from_titlefilter; customize patterns viaebs_houzez_title_type_patterns - Per-m² price support — a Houzez price prefix/postfix containing "m²"/"per meter"/"por metro" now pushes the EasyBroker operation with unit
square_meterinstead oftotal - Manual matching UI — the property-type override is now a dropdown of your EasyBroker account's actual types (with a live "Auto currently matches: …" hint), and a "Match EasyBroker listing" picker lets you link a WordPress property to an existing EasyBroker listing by clicking it (filter by title or EB id)
- Empty property-type/status enum lists are no longer cached for a day (API glitch or missing key would pin the UI to fallback mode)
0.5.0
- Spanish property type aliases (casa, departamento, terreno, etc.) for Houzez mapping, with auto-alignment to canonical spellings
- Inline display of up to 10 validation/sync errors directly in the WordPress admin panel for bulk pushes
- Auto-recreation of EasyBroker properties on update when the remote listing has been deleted (HTTP 404)
- Negative caching transient for failed location lookups to avoid redundant API hits
- Robust API diagnostics including HTTP status in error logs, recursive array stringification to prevent imploding fatals, and raw response parsing for non-JSON content
- Restrict bulk sync AJAX to only pull 'pending' status records, avoiding retrying failed posts repeatedly in the same run
- Display post title alongside ID in the sync log
0.4.0
- Houzez theme integration
- Push existing Houzez properties (post type
property, fave_* fields) to EasyBroker - Bulk “Sync all Houzez properties” with a title-matching link pass that updates existing EasyBroker listings instead of creating duplicates
- EasyBroker imports now create native Houzez properties (theme UI) when Houzez is active — configurable via the “Import listings as” setting
- EasyBroker Sync box on Houzez properties: status, Push now, location lookup, type/currency/agent overrides
- EasyBroker status column in the Houzez property list table
- Houzez location auto-resolution via the EasyBroker /locations endpoint
0.3.0
- Added: concurrency locks — pull and push never overlap (fixes cron vs. manual button race)
- Added: push time budget so push never hits
max_execution_time - Fixed: PHP 8 safety —
sanitize_amount()and numeric attributes no longer fatal on malformed values - Added: ISO-4217 currency sanitizer (3 uppercase letters); used in admin settings and field map
- Security: meta-box save rejects non-scalar POST values; API import skips non-scalar values
- Fixed: SSRF check handles IPv6 bracket notation correctly
- Improved: partial pagination errors are logged; AJAX shows "already running" message
- Added:
Update URI: falseheader to prevent accidental wordpress.org updates - Cleanup: uninstall removes lock options
- Dev: new tests for
sanitize_amount,sanitize_currency, and non-numeric legacy meta
0.2.0
- Security & hardening pass
- Fixed: images no longer re-sent on update (no more duplicates)
- Fixed: agent sent as account email, not
agent_id - Added: pre-flight validation, SSRF protection, HTTP 429 handling
- Added: per-property "Push to EasyBroker now" button
- Dev: PHPCS config, Composer dev deps, PHPUnit tests
0.1.0
- Initial release: push, pull, CPT, shortcode, templates, admin, scheduler
📄 License
GPL-2.0-or-later — see LICENSE.
Releases
5 releases. Each count is every asset in that release; expand a row for the breakdown.