Title: Shift8 Real Estate Listings for TRREB
Author: shift8
Published: <strong>28 Ottobre 2025</strong>
Last modified: 23 Maggio 2026

---

Ricerca i plugin

![](https://ps.w.org/shift8-real-estate-listings-for-treb/assets/banner-772x250.
png?rev=3385519)

![](https://ps.w.org/shift8-real-estate-listings-for-treb/assets/icon-256x256.png?
rev=3385519)

# Shift8 Real Estate Listings for TRREB

 Di [shift8](https://profiles.wordpress.org/shift8/)

[Scarica](https://downloads.wordpress.org/plugin/shift8-real-estate-listings-for-treb.1.8.2.zip)

 * [Dettagli](https://it.wordpress.org/plugins/shift8-real-estate-listings-for-treb/#description)
 * [Recensioni](https://it.wordpress.org/plugins/shift8-real-estate-listings-for-treb/#reviews)
 *  [Installazione](https://it.wordpress.org/plugins/shift8-real-estate-listings-for-treb/#installation)
 * [Sviluppo](https://it.wordpress.org/plugins/shift8-real-estate-listings-for-treb/#developers)

 [Supporto](https://wordpress.org/support/plugin/shift8-real-estate-listings-for-treb/)

## Descrizione

Shift8 TREB Real Estate Listings is a comprehensive WordPress plugin that automates
the process of importing and managing real estate listings from the Toronto Real
Estate Board (TREB) via the PropTx RESO Web API. This plugin eliminates manual listing
management by automatically fetching property data and creating properly formatted
WordPress posts.

**[Read our detailed blog post about this plugin](https://shift8web.ca/how-to-import-trreb-proptx-real-estate-listings-into-your-wordpress-site/)**
for technical insights, implementation details, and the story behind migrating from
RETS to RESO Web API.

#### Key Features

 * **Automated Synchronization** – Scheduled sync using WordPress cron with configurable
   frequency
 * **PropTx RESO Web API Integration** – Secure Bearer token authentication with
   comprehensive error handling
 * **Unlimited Image Import** – Imports ALL available photos per listing with cross-
   hosting batch processing
 * **Universal Template System** – Compatible with all page builders (Visual Composer,
   Elementor, Gutenberg, Bricks)
 * **Google Maps Integration** – Interactive maps with free OpenStreetMap geocoding
   and conditional display
 * **WalkScore Integration** – Walkability scoring for properties
 * **Member-Based Categorization** – Automatic categorization based on agent membership
 * **Geographic Filtering** – Restrict listings by postal code prefix (FSA) or city
   name with autocomplete
 * **Sold Listing Management** – Automatically updates existing listings to sold
   status with title prefix and tags
 * **WP-CLI Support** – Full command-line interface for server management
 * **Comprehensive Logging** – Detailed logging system with admin interface

#### Perfect For

 * Real estate agencies using TREB/PropTx RESO Web API
 * Property management companies
 * Real estate agents and brokers
 * WordPress developers building real estate sites
 * Anyone needing automated MLS listing synchronization

#### Advanced Features

 * **Incremental Synchronization** – Uses ModificationTimestamp for efficient API
   usage
 * **Batch Image Processing** – Memory-aware processing with adaptive timeouts
 * **Direct MLS Import** – Import specific listings via WP-CLI
 * **API Diagnostics** – Raw API response analysis for troubleshooting
 * **Geographic Filtering** – Filter by postal code prefix (FSA) or city name, mutually
   exclusive via admin dropdown
 * **Listing Preview** – Preview API results via WP-CLI without creating posts
 * **Sync Mode Management** – Control over incremental vs age-based synchronization
 * **Security Focused** – All input sanitized, output escaped, encrypted credential
   storage

### External Services

This plugin connects to several external services to provide real estate listing
functionality:

**PropTx RESO Web API (Toronto Real Estate Board)**
 – **Purpose**: Retrieves real
estate listing data from the Toronto Real Estate Board (TREB) MLS system – **Data
Sent**: API authentication token, search parameters, listing filters – **When**:
During scheduled syncs and manual data imports – **Service Provider**: PropTx RESO
Web API (query.ampre.ca) – **Terms of Service**: https://www.ampre.ca/terms-of-service–**
Privacy Policy**: https://www.ampre.ca/privacy-policy

**OpenStreetMap Nominatim API**
 – **Purpose**: Geocodes property addresses to obtain
latitude/longitude coordinates for mapping – **Data Sent**: Property addresses (
street, city, province, postal code) – **When**: When processing new listings or
updating existing ones – **Service Provider**: OpenStreetMap Foundation (nominatim.
openstreetmap.org) – **Usage Policy**: https://operations.osmfoundation.org/policies/
nominatim/ – **Privacy Policy**: https://wiki.osmfoundation.org/wiki/Privacy_Policy

**Google Maps API (Optional)**
 – **Purpose**: Displays interactive maps for property
locations – **Data Sent**: Property coordinates, API key – **When**: When viewing
individual listing pages (if Google Maps API key is configured) – **Service Provider**:
Google LLC – **Terms of Service**: https://developers.google.com/maps/terms – **
Privacy Policy**: https://policies.google.com/privacy

**WalkScore API (Optional)**
 – **Purpose**: Displays walkability scores and neighborhood
information – **Data Sent**: Property address, WalkScore ID – **When**: When viewing
individual listing pages (if WalkScore credentials are configured) – **Service Provider**:
WalkScore.com – **Terms of Service**: https://www.walkscore.com/terms-of-use/ – **
Privacy Policy**: https://www.walkscore.com/privacy/

All external service connections are made server-to-server and do not directly collect
visitor data. Property addresses and coordinates are only sent to mapping services
when explicitly configured by the site administrator.

### WP-CLI Reference

All commands are registered under `wp shift8-treb`. WP-CLI must be installed on 
the server.

#### wp shift8-treb sync

Run a manual sync of TREB listings from the PropTx RESO Web API.

Options:

 * `--dry-run` – Run without creating or updating any posts.
 * `--verbose` – Show detailed output including settings, sample data, and progress.
 * `--limit=<number>` – Limit the number of listings to process. Overrides admin
   settings.
 * `--force` – Force sync even if the bearer token is not configured.
 * `--listing-age=<days>` – Override listing age in days. Ignores incremental sync
   and uses age-based filtering.
 * `--mls=<numbers>` – Import specific MLS number(s), comma-separated. Example: `
   W12436591,C12380184`
 * `--members-only` – Sync only listings from configured member IDs. Applies filter
   at API level.
 * `--postal-prefix=<prefixes>` – Override geographic filter with postal code prefixes(
   FSA). Comma-separated. Example: `M5V,M6H`. Mutually exclusive with `--city`.
 * `--city=<cities>` – Override geographic filter with city names. Comma-separated.
   Example: `"Toronto W08,Mississauga"`. Mutually exclusive with `--postal-prefix`.
 * `--skip-images` – Skip image downloads for faster sync. Stores external URLs 
   only.
 * `--sequential-images` – Use sequential image processing instead of batch. Slower
   but more compatible.

Examples:

    ```
    wp shift8-treb sync
    wp shift8-treb sync --dry-run --verbose
    wp shift8-treb sync --listing-age=7 --limit=50
    wp shift8-treb sync --mls=W12436591,C12380184
    wp shift8-treb sync --members-only --skip-images
    wp shift8-treb sync --postal-prefix=M5V,M6H
    wp shift8-treb sync --city="Brampton,Oakville" --limit=20
    ```

#### wp shift8-treb preview

Query the API and display a summary of matching listings without creating any posts.
Output includes price range and median, city breakdown, property type breakdown,
and top agents.

Options:

 * `--limit=<number>` – Limit number of listings to fetch.
 * `--listing-age=<days>` – Override listing age in days.
 * `--members-only` – Only show listings from configured member IDs.
 * `--postal-prefix=<prefixes>` – Override geographic filter with postal code prefixes.
   Mutually exclusive with `--city`.
 * `--city=<cities>` – Override geographic filter with city names. Mutually exclusive
   with `--postal-prefix`.
 * `--format=<format>` – Output format: `table` (default) or `json`.

Examples:

    ```
    wp shift8-treb preview
    wp shift8-treb preview --postal-prefix=M5V,M6H,M8X
    wp shift8-treb preview --city="Toronto W08,Mississauga"
    wp shift8-treb preview --limit=20 --members-only
    wp shift8-treb preview --format=json
    ```

#### wp shift8-treb analyze

Fetch raw API data for diagnostic analysis. Supports searching for specific MLS 
numbers and showing agent breakdowns. No posts are created.

Options:

 * `--limit=<number>` – Maximum listings to analyze. Default: 50.
 * `--search=<mls>` – Search for specific MLS number(s). Comma-separated.
 * `--show-agents` – Show unique agent IDs and their listing counts.
 * `--days=<number>` – Number of days to look back. Default: 90.
 * `--members-only` – Only analyze listings from configured member IDs.
 * `--postal-prefix=<prefixes>` – Override geographic filter. Mutually exclusive
   with `--city`.
 * `--city=<cities>` – Override geographic filter. Mutually exclusive with `--postal-
   prefix`.

Examples:

    ```
    wp shift8-treb analyze --limit=100 --show-agents
    wp shift8-treb analyze --search=W12436591,C12380184
    wp shift8-treb analyze --days=30 --limit=200
    wp shift8-treb analyze --city="Mississauga" --days=30
    ```

#### wp shift8-treb settings

Display current plugin configuration. Sensitive values such as the bearer token 
are masked.

Options:

 * `--format=<format>` – Output format: `table` (default), `json`, or `yaml`.

Examples:

    ```
    wp shift8-treb settings
    wp shift8-treb settings --format=json
    ```

#### wp shift8-treb test_api

Test the PropTx RESO Web API connection using the configured bearer token.

No options. Example:

    ```
    wp shift8-treb test_api
    ```

#### wp shift8-treb test_media

Test the Media API for a specific listing. Shows available photos with URLs, types,
order, and preferred photo status.

Arguments:

 * `<listing_key>` – The MLS listing key. Example: `W12438713`

Options:

 * `--raw` – Show the full raw JSON API response.

Examples:

    ```
    wp shift8-treb test_media W12438713
    wp shift8-treb test_media W12438713 --raw
    ```

#### wp shift8-treb sync_status

Show current sync mode (incremental or age-based), last sync timestamp, and relevant
settings.

No options. Example:

    ```
    wp shift8-treb sync_status
    ```

#### wp shift8-treb reset_sync

Reset the incremental sync timestamp. Forces next sync to use age-based filtering,
re-importing listings that may have been deleted locally.

Options:

 * `--yes` – Skip the confirmation prompt.

Examples:

    ```
    wp shift8-treb reset_sync
    wp shift8-treb reset_sync --yes
    ```

#### wp shift8-treb clear_logs

Clear all plugin sync logs.

Options:

 * `--yes` – Skip the confirmation prompt.

Examples:

    ```
    wp shift8-treb clear_logs
    wp shift8-treb clear_logs --yes
    ```

#### wp shift8-treb retry-images

Retry downloading failed images for posts that have stored external image references.
Draft posts are auto-published if the retry succeeds.

Options:

 * `--limit=<number>` – Limit number of posts to process. Default: unlimited.
 * `--dry-run` – Show what would be processed without downloading.
 * `--status=<status>` – Only process posts with a specific status: `draft`, `publish`,
   or `any` (default).

Examples:

    ```
    wp shift8-treb retry-images
    wp shift8-treb retry-images --dry-run
    wp shift8-treb retry-images --status=draft
    wp shift8-treb retry-images --limit=10<h3>Technical Requirements</h3>
    ```

* WordPress 5.0 or higher
 * PHP 7.4 or higher * cURL extension for API communication*
Write permissions for wp-content/uploads directory * Valid PropTx RESO Web API bearer
token

### Support

For support, documentation, and updates, visit the plugin’s GitHub repository or
contact Shift8 Web.

### Privacy Policy

This plugin connects to the PropTx RESO Web API to retrieve real estate listing 
data. No personal data is transmitted to external services beyond what is necessary
for API authentication and data retrieval. All API credentials are encrypted and
stored securely in your WordPress database.

### Credits

Developed by [Shift8 Web](https://shift8web.ca) for integration with the PropTx 
RESO Web API and Toronto Real Estate Board listing management.

## Screenshot

[⌊Main settings page with API configuration and sync controls⌉⌊Main settings page
with API configuration and sync controls⌉[

Main settings page with API configuration and sync controls

## Installazione

 1. Upload the plugin files to the `/wp-content/plugins/shift8-treb/` directory
 2. Activate the plugin through the ‘Plugins’ screen in WordPress
 3. Navigate to Shift8 > TREB Listings in the admin menu
 4. Configure your PropTx RESO Web API bearer token and sync preferences
 5. Set up your listing template with the provided placeholders
 6. Run your first sync manually or wait for the scheduled sync

## FAQ

### Do I need a PropTx RESO Web API account?

Yes, you need a valid PropTx RESO Web API bearer token to access TREB listing data.
Contact PropTx for API access credentials.

### How many images can be imported per listing?

The plugin imports ALL available images per listing with no artificial limits. It
uses intelligent batch processing to handle large image sets efficiently.

### Is this compatible with page builders?

Yes! The plugin uses universal placeholders that work with Visual Composer, Elementor,
Gutenberg, Bricks, and any other page builder.

### Can I import specific listings?

Yes, use the WP-CLI command: `wp shift8-treb sync --mls=W12345678,C12345679` to 
import specific MLS numbers.

### How do I troubleshoot sync issues?

 1. Enable debug mode in plugin settings
 2. Run a manual sync to generate logs
 3. Check the log viewer for error messages
 4. Use the API connection tester: `wp shift8-treb test_api`
 5. Use `wp shift8-treb analyze` for raw API diagnostics
 6. Use `wp shift8-treb preview` to verify filters without creating posts

### Does this work with multisite?

The plugin is designed for single-site installations. Multisite compatibility is
not currently supported.

### What WP-CLI commands are available?

The plugin provides a full suite of WP-CLI commands under the `wp shift8-treb` namespace.
See the WP-CLI Reference section below for complete documentation of each command
with all options and parameters.

## Recensioni

![](https://secure.gravatar.com/avatar/8b64c64e2c1351fac83223bd4e806ed75dc900dcc2a1ab4274ca7b9055d82ce3?
s=60&d=retro&r=g)

### 󠀁[Great plug-in and support](https://wordpress.org/support/topic/great-plug-in-and-support-61/)󠁿

 [venziep1](https://profiles.wordpress.org/venziep1/) 20 Marzo 2026

This plug-in was great for syncing TREB listings, and does what its intended.

 [ Leggi la recensione di 1 ](https://wordpress.org/support/plugin/shift8-real-estate-listings-for-treb/reviews/)

## Contributi e sviluppo

“Shift8 Real Estate Listings for TRREB” è un software open source. Le persone che
hanno contribuito allo sviluppo di questo plugin sono indicate di seguito.

Collaboratori

 *   [ shift8 ](https://profiles.wordpress.org/shift8/)

[Traduci “Shift8 Real Estate Listings for TRREB” nella tua lingua.](https://translate.wordpress.org/projects/wp-plugins/shift8-real-estate-listings-for-treb)

### Ti interessa lo sviluppo?

[Esplora il codice](https://plugins.trac.wordpress.org/browser/shift8-real-estate-listings-for-treb/)
segui il [repository SVN](https://plugins.svn.wordpress.org/shift8-real-estate-listings-for-treb/),
segui il [log delle modifiche](https://plugins.trac.wordpress.org/log/shift8-real-estate-listings-for-treb/)
tramite [RSS](https://plugins.trac.wordpress.org/log/shift8-real-estate-listings-for-treb/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.8.2

 * Compatibility update: Tested against WordPress 7.0 and updated plugin metadata.

#### 1.8.1

 * Added full WP-CLI command reference documentation with all options, parameters,
   and examples

#### 1.8.0

 * **Geographic Region Filtering**: Restrict listings by postal code prefix (FSA)
   or city name
 * **Postal Code Prefix Filter**: Uses OData `startswith(PostalCode, 'M5V')` for
   precise area targeting with FSA validation
 * **City Name Filter**: Uses `City eq 'CityName'` with autocomplete powered by 
   AMPRE Lookup API
 * **Mutually Exclusive Filters**: Admin dropdown selects filter type (None, Postal
   Prefix, City) — one at a time
 * **City Autocomplete**: jQuery UI Autocomplete with cached canonical city names
   from AMPRE Lookup API (30-day cache)
 * **Server-Side Validation**: Cities validated against canonical list on save; 
   invalid entries stripped with admin warning
 * **Client-Side Validation**: Real-time form validation against loaded city list
   before submission
 * **Listing Preview Command**: New `wp shift8-treb preview` shows API results without
   creating posts — includes price stats, city/agent breakdown
 * **CLI Geographic Overrides**: `--postal-prefix=M5V,M6H` and `--city="Toronto 
   W08,Mississauga"` flags for sync, preview, and analyze commands
 * **CLI Code Consolidation**: Extracted shared `build_settings_overrides()` helper—
   sync, preview, and analyze all parse CLI flags identically
 * **Shared Fetch Method**: Added `Sync_Service::fetch_listings()` so preview and
   analyze use identical query construction as real sync
 * **Analyze Command Upgrade**: Now uses Sync_Service instead of manual token handling—
   supports all geographic filters
 * **AMPRE API Compatibility**: Removed `tolower()` from city queries (AMPRE returns
   HTTP 501 for OData string functions)
 * **Comprehensive Test Coverage**: 182 tests passing with 557 assertions, including
   4 new fetch_listings tests
 * Settings sanitization consolidated into single authoritative location, eliminating
   duplicate registration

#### 1.7.4

 * Fix: “Last sync” timestamp now updates even when API returns zero listings (manual/
   cron)
 * Tests: added coverage to ensure last sync updates on empty results and not on
   dry-run

#### 1.7.3

 * **Re-listing Detection**: Address-based duplicate detection catches when agents
   delete and re-list with NEW MLS numbers
 * **Smart Duplicate Logic**: Matches by address + transaction type + agent, updates
   existing post instead of creating duplicates
 * **Dual Listing Support**: Correctly allows same address with different transaction
   types (For Sale vs For Lease) as separate posts
 * **Transaction Type Storage**: Now stores TransactionType in meta field for efficient
   querying and duplicate detection
 * **Legacy Fallback**: Parses title prefixes for legacy posts without transaction_type
   meta
 * **Verified Real-World Fix**: Tested with actual duplicate examples, confirmed
   4x duplicate reduction
 * **Comprehensive Test Coverage**: Added 5 new duplicate detection tests, all 153
   tests passing with 490 assertions
 * Prevents the common scenario of agents re-listing causing duplicate posts with
   different MLS numbers

#### 1.7.2

 * **TREB Display Format**: Bedroom count now matches TREB/realtor.ca official “
   X+Y” format (e.g., “1+1” instead of “2”)
 * **Enhanced Bedroom Display**: Uses BedroomsAboveGrade + BedroomsBelowGrade breakdown
   when available for proper ITSO standard compliance
 * **Smart Fallback Logic**: Gracefully handles properties with only above-grade
   bedrooms, commercial properties, and edge cases
 * **Real-World Validation**: Tested across 8 property types (condos, detached, 
   townhouses, studios, commercial) with 50+ API listings
 * **Comprehensive Test Coverage**: Added 6 new bedroom format tests, all 148 tests
   passing with 484 assertions
 * **Production Verified**: MLS C12468133 confirmed displaying “1+1” matching official
   TREB format on realtor.ca
 * Fixes user-reported issue where “1+1 bedroom” listings showed as “2 bedrooms”
   instead of matching industry standard

#### 1.7.1

 * **Critical Data Fix**: Corrected API field mappings for bathrooms and square 
   footage – was showing N/A, now displays correctly
 * **API Field Updates**: Updated to use BathroomsTotalInteger (not BathroomsTotal)
   and LivingAreaRange (not LivingArea) per actual AMPRE API
 * **Enhanced Data Handling**: Created format_square_footage() helper with fallback
   chain (LivingArea  LivingAreaRange  BuildingAreaTotal  N/A)
 * **Additional Meta Fields**: Added storage for BedroomsAboveGrade, BedroomsBelowGrade,
   and LivingAreaRange for better data extensibility
 * **Comprehensive Test Coverage**: Added 13 new tests for API field mapping, all
   142 tests passing with 468 assertions
 * **Improved Reliability**: Tests cover helper methods, meta field storage, edge
   cases, integration flows, and backward compatibility
 * **Documentation Update**: Added apiFieldMappingPatterns and troubleshootingWorkflow
   sections to .cursorrules for future maintainability
 * Fixes issue where bathroom count and square footage always displayed as “N/A”
   despite data being available in API

#### 1.7.0

 * **Transaction Type Differentiation**: Post titles now prefixed with “For Sale:”,“
   For Lease:”, or “For Sale or Lease:” to distinguish dual listings
 * **Transaction Type Filtering**: Optional API filter to sync only sale listings,
   lease listings, or both (new setting: transaction_type_filter)
 * **Weekly Cleanup Job**: Automated removal of terminated/cancelled listings with
   intelligent API querying (runs weekly for optimal performance)
 * **Enhanced API Filtering**: Replaced ContractStatus filter with StandardStatus(
   Active, Pending, Closed) for better accuracy
 * **Performance Optimization**: Weekly cleanup uses 1 API query vs 200 individual
   calls (200x reduction in API usage)
 * **Improved Filtering Logic**: Added ContractStatus ne ‘Unavailable’ exclusion
   to prevent importing unavailable listings
 * **Comprehensive Test Coverage**: Added 13 new tests, all 129 tests passing with
   428 assertions
 * **Code Coverage Improvement**: Sync Service coverage increased from 55.56% to
   83.95%
 * Prevents importing terminated, cancelled, expired, or withdrawn listings at the
   API level
 * Automatically removes terminated listings from website within 7 days
 * Helps agents differentiate between same-address sale vs lease listings

#### 1.6.6

 * **Documentation Enhancement**: Added prominent blog post link with technical 
   implementation details
 * **Tag Optimization**: Updated WordPress.org tags for better plugin discoverability(
   trreb, mlstr)
 * **Improved Credits**: Added clickable link to Shift8 Web website in credits section

#### 1.6.5

 * **Branding Update**: Replaced all mentions of “AMPRE” with “PropTx RESO Web API”
   in documentation
 * **Documentation Enhancement**: Updated all readme files to reflect the official
   API provider naming
 * Improved consistency across user-facing documentation

#### 1.6.4

 * **Conditional Publishing**: Posts now remain as drafts if images fail to download,
   preventing imageless listings from appearing on site
 * **Automatic Image Retry**: Failed images are automatically retried on subsequent
   syncs with intelligent status management
 * **Auto-Publish Functionality**: Draft posts automatically publish when images
   become available on retry
 * **WP-CLI Retry Command**: New `wp shift8-treb retry-images` command for manual
   retry control with progress tracking
 * **Enhanced Image Handling**: Stores external image references with attempt tracking
   for comprehensive failure management
 * **Improved User Experience**: Clear draft queue for manual review with automatic
   resolution of temporary image failures
 * **Comprehensive Test Coverage**: Added 6 new tests covering conditional publishing,
   retry logic, and auto-publish scenarios
 * Fixed WordPress.org plugin directory compliance issues
 * Updated contributors list to ‘shift8’
 * Replaced inline CSS/JS with proper wp_enqueue functions for better performance
 * Added comprehensive external services documentation
 * Fixed transient prefixes to use proper plugin prefix (shift8_treb_)
 * Created dedicated frontend CSS file for listing display
 * Improved WalkScore integration to comply with WordPress standards
 * Enhanced code organization and maintainability

#### 1.6.3

 * Fixed WordPress.org plugin directory compliance issues
 * Updated contributors list to ‘shift8’
 * Replaced inline CSS/JS with proper wp_enqueue functions
 * Added comprehensive external services documentation
 * Fixed transient prefixes to use proper plugin prefix
 * Created dedicated frontend CSS file
 * Improved WalkScore integration

#### 1.6.2

 * Critical Bug Fixes: Comprehensive resolution of three major production issues
 * Duplicate Image Prevention: Enhanced detection handles WordPress -1.jpg suffixes
   with automatic cleanup
 * Geocoding Accuracy: Intelligent address cleaning preserves street name components(
   Upper/Lower/North/South/East/West)
 * Duplicate Post Prevention: Multi-layered detection with race condition protection
   and proactive cleanup
 * Comprehensive Test Coverage: 107 assertions covering diverse Toronto area addresses
   including condos, apartments, complex street names
 * Enhanced Reliability: Zero-tolerance testing approach with 97 tests passing (
   437 total assertions)
 * Performance Optimizations: Rate-limiting compliance, batch processing, enhanced
   error handling and debugging
 * Improved duplicate detection with fallback methods (meta  tags  title search)
 * Automatic attachment cleanup and orphaned image correction
 * Proactive duplicate post cleanup with attachment migration

#### 1.6.1

 * Post Excerpt Template: Added customizable template system for post excerpts with
   full placeholder support
 * HTML Support: Both listing template and excerpt template now preserve HTML formatting(
   using wp_kses_post sanitization)
 * Enhanced Admin Interface: Excerpt template field positioned logically below listing
   template with shared placeholder documentation
 * Improved Template Processing: Consistent placeholder replacement system across
   both content and excerpt templates
 * Better User Experience: Templates now support rich formatting while maintaining
   WordPress security standards

#### 1.6.0

 * Sold Listing Management: Intelligent handling of sold/closed listings with automatic
   status updates
 * Automatically detects sold listings using ContractStatus and StandardStatus fields
   from PropTx RESO Web API
 * Updates existing listings to sold status with “(SOLD)” title prefix for clear
   identification
 * Adds “Sold” tag to sold listings for easy filtering and categorization
 * Skips importing new sold listings (only updates existing ones to sold status)
 * Comprehensive logging of sold listing status changes for audit trail
 * Enhanced test coverage with 5 new tests for sold listing functionality
 * API filter inclusion for sold/closed listings to ensure status detection

#### 1.5.0

 * OpenStreetMap Rate Limiting Compliance: Strict 1-request-per-second enforcement
   to prevent API abuse
 * Enhanced Address Geocoding: Multiple fallback strategies with intelligent unit
   number removal for TREB addresses
 * Comprehensive Test Coverage: Expanded from 72 to 87 tests (292 assertions) with
   complete geocoding and API filtering validation
 * Security Improvements: Enhanced input sanitization, output escaping, and robust
   error handling
 * Enhanced Documentation: Updated development patterns and best practices for external
   API integration
 * Prevents IP blocking and ensures sustainable OpenStreetMap usage

#### 1.4.0

 * Added –members-only CLI flag for API-level member filtering
 * Dramatic performance improvement: 3 listings vs 100+ with member filtering
 * Enhanced CLI experience with clear progress indicators and emoji icons
 * Comprehensive help documentation with practical examples
 * Flexible settings architecture with temporary CLI overrides
 * Settings dependency validation for CLI flags
 * Expanded development patterns in .cursorrules

#### 1.3.0

 * Replaced Google Maps geocoding with free OpenStreetMap Nominatim API
 * No API key required for geocoding (eliminates REQUEST_DENIED errors)
 * Unique coordinates for each listing instead of default Toronto fallback
 * Intelligent address cleaning for better geocoding accuracy
 * 7-day caching for improved performance
 * Google Maps API key now only needed for map display, not geocoding
 * Enhanced testing for OpenStreetMap integration
 * Updated documentation to clarify geocoding vs map display requirements

#### 1.2.0

 * Added Google Maps integration with conditional display
 * New direct MLS import via WP-CLI
 * API diagnostics for troubleshooting without full import
 * Sync mode management (incremental vs age-based)
 * Fixed “Clear Logs” multiple confirmation dialogs
 * Enhanced test coverage (67 tests, 157 assertions)
 * Improved documentation and best practices

#### 1.1.0

 * Enhanced media integration with batch processing
 * Universal template system for all page builders
 * Advanced image management with retry logic
 * Google Maps geocoding with intelligent caching
 * WalkScore integration (simplified)
 * Dynamic category assignment based on agent membership
 * Performance optimizations and comprehensive testing

#### 1.0.0

 * Initial release
 * PropTx RESO Web API integration
 * WordPress post creation
 * Administrative interface
 * WP-CLI command support
 * Comprehensive logging system
 * Automated synchronization

## Meta

 *  Versione **1.8.2**
 *  Ultimo aggiornamento **5 mesi fa**
 *  Installazioni attive **10+**
 *  Versione WordPress ** 5.0 o superiore **
 *  Testato fino alla versione **7.0.7**
 *  Versione PHP ** 7.4 o superiore **
 *  Lingua
 * [English (US)](https://wordpress.org/plugins/shift8-real-estate-listings-for-treb/)
 * Tag
 * [listings](https://it.wordpress.org/plugins/tags/listings/)[real-estate](https://it.wordpress.org/plugins/tags/real-estate/)
 *  [Visualizzazione avanzata](https://it.wordpress.org/plugins/shift8-real-estate-listings-for-treb/advanced/)

## Valutazioni

 5 su 5 stelle.

 *  [  1 5- recensioni a stelle     ](https://wordpress.org/support/plugin/shift8-real-estate-listings-for-treb/reviews/?filter=5)
 *  [  0 recensioni a 4-stelle     ](https://wordpress.org/support/plugin/shift8-real-estate-listings-for-treb/reviews/?filter=4)
 *  [  0 recensioni a 3-stelle     ](https://wordpress.org/support/plugin/shift8-real-estate-listings-for-treb/reviews/?filter=3)
 *  [  0 recensioni a 2-stelle     ](https://wordpress.org/support/plugin/shift8-real-estate-listings-for-treb/reviews/?filter=2)
 *  [  0 recensioni a 1-stelle     ](https://wordpress.org/support/plugin/shift8-real-estate-listings-for-treb/reviews/?filter=1)

[La tua recensione](https://wordpress.org/support/plugin/shift8-real-estate-listings-for-treb/reviews/#new-post)

[Vedi tutte le recensioni](https://wordpress.org/support/plugin/shift8-real-estate-listings-for-treb/reviews/)

## Collaboratori

 *   [ shift8 ](https://profiles.wordpress.org/shift8/)

## Supporto

Hai qualcosa da dire? Ti serve aiuto?

 [Chiedi nel forum di supporto](https://wordpress.org/support/plugin/shift8-real-estate-listings-for-treb/)