{"id":200750,"date":"2025-02-08T02:23:28","date_gmt":"2025-02-08T02:23:28","guid":{"rendered":"https:\/\/en-nz.wordpress.org\/plugins\/palace-properties\/"},"modified":"2026-09-14T06:04:54","modified_gmt":"2026-09-14T06:04:54","slug":"integrate-palace-properties","status":"publish","type":"plugin","link":"https:\/\/br.wordpress.org\/plugins\/integrate-palace-properties\/","author":23103756,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.1.0","stable_tag":"3.1.0","tested":"7.1.2","requires":"5.8","requires_php":"8.0","requires_plugins":null,"header_name":"Integrate Palace Properties","header_author":"SAFDAR","header_description":"A plugin to syncronize wp palace properties to your wordpress blog\/website.","assets_banners_color":"383297","last_updated":"2026-09-14 06:04:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/integrate-palace-properties\/","header_author_uri":"https:\/\/kiwibrain.co.nz\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":1101,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"itsisaf","date":"2025-02-08 04:43:41","revision":3236876},"2.1.0":{"tag":"2.1.0","author":"itsisaf","date":"2026-03-19 11:58:19","revision":3486430},"2.1.1":{"tag":"2.1.1","author":"itsisaf","date":"2026-04-07 00:54:46","revision":3500236},"2.1.2":{"tag":"2.1.2","author":"itsisaf","date":"2026-04-07 03:52:25","revision":3500309},"2.1.3":{"tag":"2.1.3","author":"itsisaf","date":"2026-04-07 04:41:12","revision":3500327},"2.1.4":{"tag":"2.1.4","author":"itsisaf","date":"2026-04-07 04:53:39","revision":3500334},"2.1.5":{"tag":"2.1.5","author":"itsisaf","date":"2026-05-06 11:38:40","revision":3524333},"2.1.6":{"tag":"2.1.6","author":"itsisaf","date":"2026-05-06 13:01:42","revision":3524450},"3.0.0":{"tag":"3.0.0","author":"itsisaf","date":"2026-09-14 01:35:18","revision":3694341},"3.1.0":{"tag":"3.1.0","author":"itsisaf","date":"2026-09-14 06:04:54","revision":3694525}},"upgrade_notice":{"3.1.0":"<p>Uses Palace tenancy records so rented properties no longer show as available, and adds a Recently Rented list with the date each property was let.<\/p>","3.0.0":"<p>Syncs directly from Palace, with no relay or property limit. Now follows Palace&#039;s publish settings: unpublished listings become drafts and hidden addresses are no longer shown. Check your Palace credentials on the Configs page after updating.<\/p>","2.1.0":"<p>Gallery sync reliability improvements, progress tracking dashboard, and critical bug fixes. Recommended update for all users.<\/p>","2.0.0":"<p>Major upgrade with new templates, AJAX filtering, delta sync, and full Palace API support. All existing data is preserved with backward-compatible meta keys.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3524450,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3524450,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3524450,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3524450,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","2.1.0","2.1.1","2.1.2","2.1.3","2.1.4","2.1.5","2.1.6","3.0.0","3.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3500236,"resolution":"1","location":"assets","locale":"","width":1200,"height":900}},"screenshots":{"1":"Dashboard with sync status and property statistics","2":"Property archive page with search filters","3":"Single property page with gallery and details","4":"Template selector with 6 options","5":"Display configuration settings"}},"plugin_section":[],"plugin_tags":[238011,258112,5070,2199,5075],"plugin_category":[39],"plugin_contributors":[258113],"plugin_business_model":[],"class_list":["post-200750","plugin","type-plugin","status-publish","hentry","plugin_tags-mri-palace","plugin_tags-palace","plugin_tags-property","plugin_tags-real-estate","plugin_tags-rental","plugin_category-business","plugin_contributors-safdar","plugin_committers-itsisaf"],"banners":{"banner":"https:\/\/ps.w.org\/integrate-palace-properties\/assets\/banner-772x250.png?rev=3524450","banner_2x":"https:\/\/ps.w.org\/integrate-palace-properties\/assets\/banner-1544x500.png?rev=3524450","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/integrate-palace-properties\/assets\/icon-128x128.png?rev=3524450","icon_2x":"https:\/\/ps.w.org\/integrate-palace-properties\/assets\/icon-256x256.png?rev=3524450","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/integrate-palace-properties\/assets\/screenshot-1.png?rev=3500236","caption":"Dashboard with sync status and property statistics"}],"raw_content":"<!--section=description-->\n<p>Integrate Palace Properties connects your WordPress site to <a href=\"https:\/\/www.palace.co.nz\/\">MRI Palace<\/a> property management software. Your site talks to the Palace API directly using your own Palace credentials \u2014 no third-party server sits in between \u2014 and keeps your listings up to date on a schedule you choose.<\/p>\n\n<p><strong>This plugin requires an MRI Palace account with API access.<\/strong> It sends your Palace API username and password to <code>api.getpalace.com<\/code> in order to retrieve your property records, and sends nothing at all until you have entered those credentials. No visitor or site data is ever transmitted. See the External services section below for full detail. MRI Software's <a href=\"https:\/\/www.mrisoftware.com\/nz\/legal-notices\/\">terms of use<\/a> and <a href=\"https:\/\/www.mrisoftware.com\/nz\/privacy-policy\/\">privacy policy<\/a> apply to that service.<\/p>\n\n<p><strong>Key Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Automatic Sync<\/strong> \u2014 Your site polls Palace on WP-Cron with smart delta detection (only changed properties are updated)<\/li>\n<li><strong>No Middleman<\/strong> \u2014 Properties are fetched straight from the Palace API by your own site; nothing is routed through anyone else's server<\/li>\n<li><strong>6 Beautiful Templates<\/strong> \u2014 Palace Property (default), Classic, Modern, Minimal, Grid Gallery, and Developer<\/li>\n<li><strong>AJAX Filtering<\/strong> \u2014 Real-time search, filter by price\/bedrooms\/bathrooms\/region\/type\/status, sortable<\/li>\n<li><strong>Full Property Data<\/strong> \u2014 All Palace API fields: address, rent, features, agent info, custom fields, and more<\/li>\n<li><strong>Taxonomy Support<\/strong> \u2014 Property Type, Status, Region, and Management Type taxonomies<\/li>\n<li><strong>Display Configuration<\/strong> \u2014 Control exactly which property details appear on your website<\/li>\n<li><strong>Theme Override<\/strong> \u2014 Templates can be overridden in your theme's <code>palace-properties\/<\/code> directory<\/li>\n<li><strong>Schema.org<\/strong> \u2014 Structured data (RealEstateListing) for better SEO<\/li>\n<li><strong>Gallery with Lightbox<\/strong> \u2014 Automatic image sync from Palace with keyboard\/touch lightbox<\/li>\n<li><strong>Responsive<\/strong> \u2014 Fully responsive at all breakpoints<\/li>\n<li><strong>Accessible<\/strong> \u2014 Proper ARIA labels, keyboard navigation, screen reader support<\/li>\n<\/ul>\n\n<p><strong>How It Works:<\/strong><\/p>\n\n<ol>\n<li>Configure your Palace API credentials in the plugin settings<\/li>\n<li>On a schedule you choose, your site asks the Palace API which properties are available, and imports the ones that are new or changed<\/li>\n<li>Properties no longer offered by Palace are removed from your site automatically<\/li>\n<li>Properties appear as a custom post type with full filtering and beautiful templates<\/li>\n<\/ol>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the MRI Palace API to fetch the property listings it displays. This is the service your property data already lives in, and the connection is made directly from your own site.<\/p>\n\n<p><strong>What the service is used for:<\/strong> retrieving your property records and their images so they can be shown on your website.<\/p>\n\n<p><strong>What data is sent, and when:<\/strong><\/p>\n\n<ul>\n<li>Your Palace API username and password are sent as an HTTP Basic authorization header with every request, so that Palace can identify your account. They are stored in your site's database and are never transmitted anywhere else.<\/li>\n<li>No data about your site, your visitors, or your WordPress users is ever sent.<\/li>\n<li>Requests are made on the schedule you choose on the Configs page, when you press <strong>Sync Now<\/strong> or <strong>Test Connection<\/strong>, and when property images are fetched.<\/li>\n<\/ul>\n\n<p><strong>Endpoints contacted<\/strong> (all on <code>https:\/\/api.getpalace.com<\/code>):<\/p>\n\n<ul>\n<li><code>\/Service.svc\/RestService\/v2AvailableProperties\/JSON<\/code> \u2014 the list of available properties<\/li>\n<li><code>\/Service.svc\/RestService\/v2AvailablePropertyImages\/JSON\/{code}<\/code> \u2014 images for one property<\/li>\n<li><code>\/Service.svc\/RestService\/v2ViewAllDetailedTenancy\/JSON<\/code> \u2014 the agency's tenancies, used to tell which properties are currently let. Only each tenancy's property code, start and end dates and archived flag are used. Palace's response also includes tenant names, contact details and bond information: these are received by your site as part of that response but are discarded immediately and never stored<\/li>\n<li><code>\/Service.svc\/RestService\/v2GetCompanyDetailsByAPICredentials\/JSON<\/code> \u2014 used by the Test Connection button<\/li>\n<\/ul>\n\n<p>Nothing is sent until you have entered your Palace credentials; with no credentials configured the plugin makes no external requests at all.<\/p>\n\n<p>This service is provided by MRI Software. Terms of use: <a href=\"https:\/\/www.mrisoftware.com\/nz\/legal-notices\/\">https:\/\/www.mrisoftware.com\/nz\/legal-notices\/<\/a> \u2014 Privacy policy: <a href=\"https:\/\/www.mrisoftware.com\/nz\/privacy-policy\/\">https:\/\/www.mrisoftware.com\/nz\/privacy-policy\/<\/a><\/p>\n\n<p><strong>Services loaded by your visitors' browsers<\/strong><\/p>\n\n<p>These are not contacted by your server, and receive no Palace or site data from the plugin. Like any embedded third-party resource, they receive the visitor's IP address and browser details.<\/p>\n\n<ul>\n<li><strong>Google Maps<\/strong> \u2014 property pages embed a map of the property's location from <code>maps.google.com<\/code>. The property's address or coordinates are sent in the map URL. Google's <a href=\"https:\/\/policies.google.com\/terms\">terms of service<\/a> and <a href=\"https:\/\/policies.google.com\/privacy\">privacy policy<\/a> apply.<\/li>\n<li><strong>Google Fonts<\/strong> \u2014 if you choose a Google Font in the plugin's Appearance or template settings, it is loaded from <code>fonts.googleapis.com<\/code> on property pages. Nothing is loaded from Google Fonts unless you select one. Google's <a href=\"https:\/\/policies.google.com\/terms\">terms of service<\/a> and <a href=\"https:\/\/policies.google.com\/privacy\">privacy policy<\/a> apply.<\/li>\n<\/ul>\n\n<p>The single property template also contains Facebook and X (Twitter) share links. These are ordinary links: nothing is sent to either service unless a visitor clicks one.<\/p>\n\n<p>No other external service is contacted.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/integrate-palace-properties\/<\/code> or install through the WordPress dashboard.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Navigate to <strong>WP Palace Properties \u2192 Configs<\/strong> and enter your Palace API username and password.<\/li>\n<li>Choose how often you want the site to check Palace for changes. Hourly suits most sites.<\/li>\n<li>Click <strong>Save Changes<\/strong>. The first sync starts within a minute, and runs on your chosen schedule from then on.<\/li>\n<\/ol>\n\n<p>The plugin is free and has no property limit. You need an MRI Palace account with API access \u2014 ask Palace for your API credentials if you do not have them.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20often%20do%20properties%20sync%3F\"><h3>How often do properties sync?<\/h3><\/dt>\n<dd><p>As often as you choose on the Configs page: every 15 minutes, hourly (the default), every 2 hours, twice daily, or daily. You can also trigger a sync immediately with the <strong>Sync Now<\/strong> button on the Dashboard, or re-import everything with <strong>Full Re-import<\/strong>.<\/p>\n\n<p>Syncing runs on WP-Cron, which WordPress triggers when someone visits your site. On a very quiet site a scheduled sync can therefore run late, and the Dashboard warns you if scheduled syncing appears to have stopped. If punctual syncing matters, ask your host to run WordPress cron from a real server cron job. With WP-CLI you can also run a complete sync in one go with <code>wp palace-sync run<\/code>, and check on it with <code>wp palace-sync status<\/code>.<\/p><\/dd>\n<dt id=\"what%20does%20my%20hosting%20need%3F\"><h3>What does my hosting need?<\/h3><\/dt>\n<dd><p>PHP 8.0 or later, and WordPress cron (normal on most hosts). A sync downloads your agency's property and tenancy lists from Palace; for a mid-size agency this needs around 50 MB of memory on top of what WordPress itself uses, so a PHP memory limit of at least 128 MB is recommended.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20property%20is%20rented%20or%20withdrawn%3F\"><h3>What happens when a property is rented or withdrawn?<\/h3><\/dt>\n<dd><p>The plugin reads Palace's tenancy records on every sync. As soon as a property has a current tenancy it is taken off your website, even if Palace is still advertising it, and appears under WP Palace Properties \u2192 Recently Rented with the date it was rented and when the lease ends. A property whose tenant is leaving on a known date also counts as rented until then. Rented properties stay in that list for 90 days after the tenancy started and then move to the trash.<\/p>\n\n<p>A property that Palace stops advertising without a tenancy (withdrawn) is moved to the trash after it has been missing from two syncs, to guard against a brief glitch in Palace's data. Trashed properties keep their photos until WordPress empties the trash (after 30 days by default), and if Palace advertises a property again it is restored rather than duplicated.<\/p>\n\n<p>To keep a property on your site regardless, open it in the editor and enable <strong>Lock updates<\/strong>. A locked property is neither updated nor removed by syncs. If you move a property to the trash yourself, syncs leave it there.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20my%20data%20anywhere%3F\"><h3>Does the plugin send my data anywhere?<\/h3><\/dt>\n<dd><p>Your site sends your Palace credentials to the Palace API, and nothing else, to anyone. No data about your site, visitors, or users is sent by the plugin. Visitors' browsers do load Google Maps on property pages and, if you choose one, a Google Font. See the External services section below.<\/p><\/dd>\n<dt id=\"can%20i%20control%20which%20properties%20appear%3F\"><h3>Can I control which properties appear?<\/h3><\/dt>\n<dd><p>Your website shows only properties that are available to rent: advertised in Palace and without a current tenancy. Properties that have been let are listed privately under WP Palace Properties \u2192 Recently Rented instead. The plugin also follows the publishing settings you make in Palace. A property whose \"publish entry\" setting is off is kept on your site as a draft, out of public view, and goes live automatically when you publish it in Palace. A property whose \"publish address\" setting is off is shown without its street address: its page, map, search results and structured data show the suburb only, and its map is centred on the suburb rather than the exact location.<\/p>\n\n<p>The plugin syncs what Palace lists as available, so the place to control which properties appear is Palace itself. On the WordPress side you can hide an individual property from the front end, or lock it so syncs never overwrite your edits, using the options in the property editor. Use the Display Configuration settings to choose which property details are shown.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20templates%3F\"><h3>Can I customize the templates?<\/h3><\/dt>\n<dd><p>Yes. Create a <code>palace-properties\/<\/code> directory in your theme and add <code>single.php<\/code> or <code>archive.php<\/code> to override the plugin templates. The Developer template is specifically designed for full CSS customization.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20block%20themes%3F\"><h3>Does it work with block themes?<\/h3><\/dt>\n<dd><p>Yes. The plugin works with both classic and block themes (like Twenty Twenty-Five).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.1.0<\/h4>\n\n<ul>\n<li><strong>Rented properties are recognised from Palace's tenancy records.<\/strong> Palace can keep advertising a property after it is let, so the website now shows only properties that are advertised and have no current tenancy. A property whose tenant is leaving on a known date also counts as rented until then.<\/li>\n<li>New <strong>Recently Rented<\/strong> list (WP Palace Properties \u2192 Recently Rented) showing each rented property with the date it was rented and the lease end date, newest first. Rented properties are kept out of public view, and move to the trash 90 days after the tenancy started.<\/li>\n<li>A property that Palace stops advertising because it has been let is now kept as rented instead of being removed<\/li>\n<li>A new Rental column on the property list<\/li>\n<li>If Palace's tenancy data cannot be read, the sync is skipped rather than risk publishing let properties as available<\/li>\n<li>After updating, every property is re-checked once in the background; photos already on the site are kept<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li><strong>Properties are now fetched directly from the Palace API by your own site.<\/strong> The external relay service that previously polled Palace and pushed properties to your site over a webhook has been removed entirely.<\/li>\n<li>No subscription key and no account with a third-party service is needed any more, and there is no longer a property limit \u2014 the plugin is fully free<\/li>\n<li>New <strong>Sync Frequency<\/strong> setting: every 15 minutes, hourly, every 2 hours, twice daily or daily<\/li>\n<li>Imports and removals run in time-limited slices across cron ticks, so a large library imports in a few ticks rather than one batch per visit, without long-running requests<\/li>\n<li><strong>Full Re-import<\/strong> button to refresh every property from Palace regardless of what has already been synced<\/li>\n<li>WP-CLI commands: <code>wp palace-sync run [--force]<\/code> completes a whole sync in one process, <code>wp palace-sync status<\/code> reports the last result and when the next check is due<\/li>\n<li>The Dashboard warns when scheduled syncing appears to have stopped (for example <code>DISABLE_WP_CRON<\/code> without a server cron job), and when a sync started but never finished, which usually means the host stopped the request<\/li>\n<li>Syncs take a lock, so two overlapping cron requests can never import, or confirm a removal, at the same time<\/li>\n<li>Locked properties are no longer removed when Palace stops listing them, and a property you trash yourself stays in the trash<\/li>\n<li>A property whose import is interrupted part-way is retried on the next sync, rather than being treated as up to date<\/li>\n<li>Properties that fail to save are reported on the Dashboard with the reason, and retried automatically<\/li>\n<li>Gallery sync: a Palace error response can no longer wipe a property's existing photos, large photos are no longer re-downloaded on every sync, and memory use for big galleries is much lower<\/li>\n<li>Fixed a fatal error in uninstall.php on PHP 8 that stopped settings and scheduled events being cleaned up, and uninstalling with data removal now also deletes properties in the trash and their images<\/li>\n<li>Google Fonts chosen in the Customizer now load through the standard WordPress stylesheet queue<\/li>\n<li>A property that Palace re-lists after it was removed is now restored and published, even when nothing about it changed while it was off the market (previously it could come back as a hidden draft)<\/li>\n<li>Property pages on block themes (such as Twenty Twenty-Five) now use the theme's real header and footer, with proper header and footer landmarks, instead of WordPress's bare fallback header<\/li>\n<li>Schema.org structured data is now printed once per property page instead of twice, and the <code>ipp_property_schema<\/code> filter applies to all of it<\/li>\n<li>Two safety guards against a bad response from Palace emptying your site: a property must be missing from two consecutive syncs before it is removed, and a sync that would remove an implausible share of your library is held back and reported instead<\/li>\n<li>Removed properties are moved to the trash and keep their images, so a listing removed in error can be restored intact. Images are only deleted when the property is deleted permanently<\/li>\n<li>A property that is re-listed by Palace after being removed now reuses its original entry instead of creating a duplicate<\/li>\n<li>The Dashboard and Configs pages now report real sync results \u2014 when the last run happened, how many properties were updated and removed, when the next check is due, and the reason for any failure<\/li>\n<li>Scheduled events are now cleared properly when the plugin is deactivated<\/li>\n<li>Your Palace password is no longer rendered back into the settings page; leave the field blank to keep the saved one<\/li>\n<li>macOS <code>.DS_Store<\/code> files are no longer included in the plugin package<\/li>\n<li><strong>Follows Palace's publishing settings.<\/strong> A listing Palace marks as not to be published online is kept as a draft, out of public view, and published automatically once the agency publishes it in Palace. A listing whose address Palace marks as not to be published no longer shows its street address, unit or exact location anywhere: pages, maps (centred on the suburb instead), search, the REST API and structured data. Previous versions published both regardless.<\/li>\n<li>The REST API's single-property and gallery endpoints, and the <code>[palace_property]<\/code>, <code>[palace_property_field]<\/code> and <code>[palace_agent]<\/code> shortcodes, no longer serve an unpublished listing to visitors who ask for it by ID<\/li>\n<li>Pets and smoking policies now show Palace's own wording, such as \"By consent\", instead of treating anything other than \"Yes\" as not allowed. Several templates also showed \"1\" instead of \"Yes\"; that is fixed.<\/li>\n<li>After updating, every property is re-imported once in the background so the settings above apply to existing listings. Photos already on the site are kept, not downloaded again.<\/li>\n<li>Image downloads after a large import no longer risk being cut off by the host: once a cron request has been busy for a while, remaining image jobs wait for the next run instead of being lost<\/li>\n<li>Removed the \"Property Statuses to Sync\" and \"Include Archived Properties\" settings. They were never connected to anything \u2014 the plugin syncs what the Palace available-properties feed contains \u2014 so they promised control they did not provide. To filter what is imported, use the <code>ipp_sync_fetched_properties<\/code> filter documented in DEVELOPERS.md.<\/li>\n<li>Fixed the Dashboard's \"Visible on Frontend\" figure, which assumed a status filter that was never applied<\/li>\n<li><strong>Security:<\/strong> hardened the Schema.org JSON-LD output. A property whose name or address contained the text <code>&lt;\/script&gt;<\/code> could previously break out of the structured-data block, which made the Palace feed a potential source of injected markup<\/li>\n<li><strong>Security:<\/strong> front-end search and filter parameters are now unslashed as well as sanitized<\/li>\n<li><strong>Security:<\/strong> the inbound webhook endpoint has been removed. It was authenticated with a shared secret issued by the relay service, so with that service gone the endpoint could no longer verify anything. Nothing pushes to your site any more \u2014 your site does the asking.<\/li>\n<\/ul>\n\n<p><strong>Upgrading:<\/strong> enter your Palace API username and password on the Configs page if they are not already saved, then press Save Changes. Your existing properties, images and settings are preserved.<\/p>\n\n<h4>2.1.6<\/h4>\n\n<ul>\n<li>Refreshed plugin icon and banner artwork on the WordPress.org listing<\/li>\n<\/ul>\n\n<h4>2.1.5<\/h4>\n\n<ul>\n<li>Site Domain Status indicator on the configs page \u2014 shows whether the API is delivering webhooks to the current site host or a stale one (typical after staging-to-prod migration)<\/li>\n<li>\"Re-sync this site with API\" button when a domain mismatch is detected<\/li>\n<li>Settings save now always re-pushes registration to the API, even when no field values changed<\/li>\n<li>Self-heals the webhook HMAC secret on save so signature verification stops short-circuiting to \"Open\" auth<\/li>\n<li>Self-heals the unique blog ID if it was accidentally deleted from the options table<\/li>\n<li>Trimmed informational logs to critical-only<\/li>\n<\/ul>\n\n<h4>2.1.4<\/h4>\n\n<ul>\n<li>Surface API error messages in dashboard status (e.g. mismatched Palace account, site limit reached) instead of generic \"Invalid Subscription Key\"<\/li>\n<\/ul>\n\n<h4>2.1.3<\/h4>\n\n<ul>\n<li>Fixed: pre-2.1.1 sites now auto re-register their webhook URL on first load after upgrade, no manual settings save required<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li>Fixed webhook URL not updating after staging to production migration \u2014 plugin now auto-detects site URL changes and re-registers the webhook endpoint with the API<\/li>\n<li>Safe for multi-site subscription keys \u2014 no false re-registrations on shared keys<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Gallery sync progress tracking \u2014 see which properties are syncing, queued, or failed<\/li>\n<li>Resync Galleries button \u2014 force re-download all property images<\/li>\n<li>Process Now button \u2014 manually trigger gallery syncs without waiting for WP-Cron<\/li>\n<li>API rate limiting \u2014 throttled image downloads to prevent Palace API timeouts<\/li>\n<li>Fixed critical bug: gallery retry hook name mismatch causing syncs to silently fail<\/li>\n<li>Fixed gallery image deletion bug where orphan cleanup removed valid images<\/li>\n<li>Fixed featured_image() helper returning wrong format for templates<\/li>\n<li>Fixed wp-color-picker dependency error on WordPress 6.9+<\/li>\n<li>Improved error visibility \u2014 failed syncs show actual error messages in dashboard<\/li>\n<li>Removed unauthenticated AJAX endpoints for better security<\/li>\n<li>Cleaned up zombie cron events from deleted properties<\/li>\n<li>Proper uninstall cleanup for all sync metadata and transients<\/li>\n<li>Dashboard performance improvements \u2014 removed heavy cron cleanup from page load<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Complete rewrite with 6 template system<\/li>\n<li>AJAX filtering, sorting, and search<\/li>\n<li>Delta sync \u2014 only changed properties are updated<\/li>\n<li>Full Palace API v2 detailed endpoint support<\/li>\n<li>Custom taxonomies (Type, Status, Region, Management)<\/li>\n<li>Display configuration \u2014 control what shows on frontend<\/li>\n<li>Property Helper class for centralized data access<\/li>\n<li>Schema.org structured data<\/li>\n<li>Vanilla JS lightbox gallery (no Swiper dependency)<\/li>\n<li>HMAC webhook authentication<\/li>\n<li>Idempotent sync with change code tracking<\/li>\n<li>Admin dashboard with sync status and stats<\/li>\n<li>WP plugin repo compliance<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Synchronize property listings from MRI Palace to your WordPress website with beautiful templates, AJAX filtering, and full property management.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/200750","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=200750"}],"author":[{"embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/itsisaf"}],"wp:attachment":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=200750"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=200750"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=200750"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=200750"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=200750"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=200750"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}