{"id":329078,"date":"2026-06-26T18:23:49","date_gmt":"2026-06-26T18:23:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/real-estate-idx-search-mls-listings-lead-capture-by-aeroidx\/"},"modified":"2026-08-20T15:44:01","modified_gmt":"2026-08-20T15:44:01","slug":"aeroidx-real-estate-idx-search-mls-listings-lead-capture","status":"publish","type":"plugin","link":"https:\/\/fr.wordpress.org\/plugins\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/","author":8812752,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.6.0","stable_tag":"0.6.0","tested":"7.0.4","requires":"6.4","requires_php":"8.1","requires_plugins":null,"header_name":"AeroIDX \u2013 Real Estate IDX Search, MLS Listings & Lead Capture","header_author":"AeroIDX","header_description":"AeroIDX renders your real estate (IDX) listings as fast, fully SEO-optimized WordPress pages \u2014 clean URLs, server-side meta tags, Open Graph, Schema.org structured data, and an XML sitemap. Requires an active AeroIDX account.","assets_banners_color":"793cc3","last_updated":"2026-08-20 15:44:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/aeroidx.com\/wordpress","header_author_uri":"https:\/\/aeroidx.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":405,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.1":{"tag":"0.2.1","author":"redjim","date":"2026-06-26 18:23:12"},"0.2.2":{"tag":"0.2.2","author":"redjim","date":"2026-07-07 20:26:44"},"0.2.3":{"tag":"0.2.3","author":"redjim","date":"2026-08-04 18:45:07"},"0.3.0":{"tag":"0.3.0","author":"redjim","date":"2026-08-04 19:33:32"},"0.4.0":{"tag":"0.4.0","author":"redjim","date":"2026-08-05 19:36:19"},"0.4.1":{"tag":"0.4.1","author":"redjim","date":"2026-08-10 21:28:40"},"0.5.0":{"tag":"0.5.0","author":"redjim","date":"2026-08-13 21:35:35"},"0.6.0":{"tag":"0.6.0","author":"redjim","date":"2026-08-20 15:44:01"}},"upgrade_notice":{"0.6.0":"<p>AeroIDX no longer creates a duplicate when another page already sits where an IDX page belongs. It asks you what to do instead. Your API Key is also checked when you save it, and the Settings screen tells you whether AeroIDX is answering.<\/p>","0.5.0":"<p>Markets can now have their own WordPress pages, created from a new Markets screen. This update also adds one page called AeroIDX to your site, which is what links to a market need in order to work.<\/p>","0.4.1":"<p>Widgets now work anywhere on your site without adding a script to your header. If you added one, you can remove it. Listing pages also stop shifting as they load.<\/p>","0.4.0":"<p>Adds an in-admin Widgets screen: build AeroIDX widgets and paste them anywhere with a shortcode, including a new testimonials widget.<\/p>","0.3.0":"<p>Redesigned admin screens, plus a fix for IDX pages that could be created \u2014 and published empty \u2014 before an API Key was saved.<\/p>","0.2.3":"<p>Fixes a sitemap that returned &quot;page not found&quot; on sites using Yoast SEO or Rank Math. Permalinks are flushed automatically on update; no action needed.<\/p>","0.2.2":"<p>Updated plugin description and readme copy. No functional changes.<\/p>","0.2.1":"<p>Internationalization, performance, and security improvements. Permalinks are flushed automatically on update.<\/p>","0.2.0":"<p>Adds SEO-friendly agent pages and full SEO parity for agent listings. Permalinks are flushed automatically on update.<\/p>","0.1.0":"<p>Initial release of AeroIDX.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3587540,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3587540,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3587540,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3587540,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"aeroidx\/page":{"$schema":"https:\/\/schemas.wp.org\/wp\/6.4\/block.json","apiVersion":3,"name":"aeroidx\/page","title":"AeroIDX Page","category":"embed","description":"Renders an AeroIDX IDX page screen (Search, Sign In, My Account, etc.)","keywords":["aeroidx","idx","real estate"],"textdomain":"aeroidx-real-estate-idx-search-mls-listings-lead-capture","supports":{"html":false},"attributes":{"type":{"type":"string","default":"search"}},"editorScript":"file:.\/edit.js"}},"tagged_versions":["0.2.1","0.2.2","0.2.3","0.3.0","0.4.0","0.4.1","0.5.0","0.6.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3587540,"resolution":"1","location":"assets","locale":"","width":2390,"height":1374},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3657254,"resolution":"2","location":"assets","locale":"","width":2889,"height":1528},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3657254,"resolution":"3","location":"assets","locale":"","width":2886,"height":1520},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3657254,"resolution":"4","location":"assets","locale":"","width":2880,"height":1473},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3657254,"resolution":"5","location":"assets","locale":"","width":2898,"height":1480},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3657254,"resolution":"6","location":"assets","locale":"","width":2895,"height":1469},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3657254,"resolution":"7","location":"assets","locale":"","width":2888,"height":1476},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3657254,"resolution":"8","location":"assets","locale":"","width":2892,"height":1477},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3657254,"resolution":"9","location":"assets","locale":"","width":2897,"height":1481}},"screenshots":{"1":"A listing detail page with the interactive property widget.","2":"The search page your visitors use to browse and filter listings. It works the moment you publish it, with nothing to design.","3":"A market page on the front end. The area description and the photos are yours, written in the WordPress editor, and the market's listings sit inside the page.","4":"The Home screen, where AeroIDX reports what it has set up on your site and what is still waiting on you.","5":"The Pages screen, where you publish the pages your visitors use to search listings and manage their account. The listing and agent pages are built in and need no page of their own.","6":"The widget library, where every widget you have built carries a shortcode ready to paste into any post, page or builder.","7":"The Markets screen. Give a market its own WordPress page and edit it like any other, or copy its shortcode into a page you already have.","8":"The Appearance screen, which lists the CSS selectors that exist on the theme you are actually running, each with a copy button.","9":"The Settings screen, where you connect your account. AeroIDX checks the key before storing it and says whether it is answering."}},"plugin_section":[],"plugin_tags":[5065,4528,5082,2199,186],"plugin_category":[39,55],"plugin_contributors":[90064,269044],"plugin_business_model":[],"class_list":["post-329078","plugin","type-plugin","status-publish","hentry","plugin_tags-idx","plugin_tags-listings","plugin_tags-mls","plugin_tags-real-estate","plugin_tags-seo","plugin_category-business","plugin_category-seo-and-marketing","plugin_contributors-realtycandy","plugin_contributors-redjim","plugin_committers-redjim"],"banners":{"banner":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/banner-772x250.png?rev=3587540","banner_2x":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/banner-1544x500.png?rev=3587540","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/icon-128x128.png?rev=3587540","icon_2x":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/icon-256x256.png?rev=3587540","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/screenshot-1.png?rev=3587540","caption":"A listing detail page with the interactive property widget."},{"src":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/screenshot-2.png?rev=3657254","caption":"The search page your visitors use to browse and filter listings. It works the moment you publish it, with nothing to design."},{"src":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/screenshot-3.png?rev=3657254","caption":"A market page on the front end. The area description and the photos are yours, written in the WordPress editor, and the market's listings sit inside the page."},{"src":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/screenshot-4.png?rev=3657254","caption":"The Home screen, where AeroIDX reports what it has set up on your site and what is still waiting on you."},{"src":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/screenshot-5.png?rev=3657254","caption":"The Pages screen, where you publish the pages your visitors use to search listings and manage their account. The listing and agent pages are built in and need no page of their own."},{"src":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/screenshot-6.png?rev=3657254","caption":"The widget library, where every widget you have built carries a shortcode ready to paste into any post, page or builder."},{"src":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/screenshot-7.png?rev=3657254","caption":"The Markets screen. Give a market its own WordPress page and edit it like any other, or copy its shortcode into a page you already have."},{"src":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/screenshot-8.png?rev=3657254","caption":"The Appearance screen, which lists the CSS selectors that exist on the theme you are actually running, each with a copy button."},{"src":"https:\/\/ps.w.org\/aeroidx-real-estate-idx-search-mls-listings-lead-capture\/assets\/screenshot-9.png?rev=3657254","caption":"The Settings screen, where you connect your account. AeroIDX checks the key before storing it and says whether it is answering."}],"raw_content":"<!--section=description-->\n<p>AeroIDX turns your real estate (IDX) listings into real WordPress pages that load fast and are built to rank. Every property gets a clean, readable URL, and its SEO markup is written on the server, so search engines can crawl and index a listing as soon as it goes up.<\/p>\n\n<p>Most IDX widgets draw their listings with JavaScript in the browser, which leaves the page's HTML nearly empty for search engines. AeroIDX does the opposite. It writes the title, meta description, Open Graph and Twitter Card tags, the canonical link, and the structured data straight into the server response.<\/p>\n\n<p><strong>Key features<\/strong><\/p>\n\n<ul>\n<li><strong>Clean listing URLs.<\/strong> Every property is served at <code>\/details\/{address-slug}\/{listing-id}<\/code>.<\/li>\n<li><strong>Server-side SEO tags.<\/strong> The <code>&lt;title&gt;<\/code>, meta description, Open Graph, and Twitter Card tags render on the server for every listing.<\/li>\n<li><strong>Schema.org structured data.<\/strong> Each listing outputs <code>RealEstateListing<\/code> JSON-LD, so it can qualify for rich results in Google.<\/li>\n<li><strong>Works with your SEO plugin.<\/strong> When Yoast SEO or Rank Math is active, AeroIDX hands them the listing data. With no SEO plugin, it outputs the tags itself.<\/li>\n<li><strong>XML sitemap.<\/strong> A dedicated sitemap lists every property so search engines can find them all.<\/li>\n<li><strong>Canonical URLs and legacy redirects.<\/strong> Old <code>\/details?id=...<\/code> links 301-redirect to the canonical URL, so you keep the SEO equity.<\/li>\n<li><strong>Classic and block themes.<\/strong> Works with both classic themes and block (FSE) themes.<\/li>\n<li><strong>Clean handling of removed listings.<\/strong> A delisted property returns a proper HTTP 410 (Gone) page instead of a broken link.<\/li>\n<li><strong>Market pages.<\/strong> Give a saved market its own WordPress page and write your own content around its listings, or drop a market into an existing page with a shortcode.<\/li>\n<\/ul>\n\n<p>Admin-screen icons are from the <a href=\"https:\/\/lucide.dev\/\">Lucide<\/a> icon set, licensed under <a href=\"https:\/\/github.com\/lucide-icons\/lucide\/blob\/main\/LICENSE\">ISC<\/a> (GPL-compatible).<\/p>\n\n<h3>External Services<\/h3>\n\n<p>AeroIDX is the WordPress front end for the AeroIDX platform and requires an active AeroIDX account and API key to function. Sign up at https:\/\/aeroidx.com\/plans.<\/p>\n\n<p>The plugin communicates with the AeroIDX service (default https:\/\/app.aeroidx.com, configurable) in the following ways:<\/p>\n\n<ul>\n<li><strong>Listing pages (server-side):<\/strong> when a listing page is requested, WordPress calls the AeroIDX API to fetch that listing's data. Only the requested listing identifier is sent.<\/li>\n<li><strong>XML sitemap (server-side, background):<\/strong> a scheduled WP-Cron job periodically fetches the full listings index from the AeroIDX API to (re)generate the sitemap.<\/li>\n<li><strong>API key validation &amp; account info (server-side):<\/strong> when you save your API key or open the AeroIDX admin screens, the plugin calls the API to validate the key and read your plan.<\/li>\n<li><strong>Page \/ site sync (server-side):<\/strong> creating an IDX page or connecting your site sends your site's home URL to AeroIDX so it can configure deep links back to your site.<\/li>\n<li><strong>Widget library (server-side):<\/strong> the Widgets screen lists the widgets saved on your AeroIDX account, and its duplicate and delete actions ask the API to duplicate or delete the widget you picked. Only that widget's identifier is sent, and only you, as a signed-in administrator, can trigger it.<\/li>\n<li><strong>Markets list (server-side):<\/strong> the Markets screen lists the markets saved on your AeroIDX account so you can create a page for one, and a page that shows a market asks the API for that market's name. Only your own account's markets are returned.<\/li>\n<li><strong>Widget script (browser-side):<\/strong> the interactive listing widget loads its script (default https:\/\/app.aeroidx.com\/components.js) from the AeroIDX asset host and requests listing data from the AeroIDX API.<\/li>\n<li><strong>Widget builder (admin browser):<\/strong> when you build or edit a widget from the plugin's Widgets screen, the plugin mints a single-use sign-on token server-side and opens the AeroIDX builder in a new browser tab on the AeroIDX host, where you configure and save the widget. Only you, as a signed-in administrator, trigger this, and it sends no data about your site's visitors.<\/li>\n<\/ul>\n\n<p>Every server-side request includes your site URL (via WordPress' <code>home_url()<\/code>) in the HTTP <code>User-Agent<\/code> header so AeroIDX can associate the request with your account. These server-side requests send only the requested listing identifier (or the listings index for the sitemap), never your visitors' personal data.<\/p>\n\n<p>The browser-side widget is different: like any embedded third-party script (for example an embedded map or video), it loads directly from the AeroIDX asset host, so when it loads a visitor's browser exposes its IP address and User-Agent to AeroIDX. If you display the widget, disclose this in your own site's privacy policy as you would for any third-party embed.<\/p>\n\n<p>By using this plugin you agree to the AeroIDX Terms of Service and Privacy Policy:<\/p>\n\n<ul>\n<li>Terms of Service: https:\/\/app.aeroidx.com\/legal\/agreements<\/li>\n<li>Privacy Policy: https:\/\/app.aeroidx.com\/legal\/privacy<\/li>\n<\/ul>\n\n<h3>Privacy Policy<\/h3>\n\n<p>AeroIDX does not collect or store any personal data about your site's visitors on your WordPress site, and it sets no cookies.<\/p>\n\n<p>Server-side requests this plugin makes to the AeroIDX service (https:\/\/app.aeroidx.com by default) carry only your site URL (in the <code>User-Agent<\/code> header) and the identifier of the listing being rendered, never visitor data.<\/p>\n\n<p>If you display the AeroIDX widget, its script is loaded in the visitor's browser directly from the AeroIDX asset host. As with any embedded third-party script (such as an embedded map or video), the visitor's browser thereby exposes its IP address and User-Agent to AeroIDX when the widget loads. This happens only on pages where you place the widget. If you use the widget, you should disclose this in your own site's privacy policy.<\/p>\n\n<p>Data handling by the AeroIDX service is governed by the AeroIDX Privacy Policy: https:\/\/app.aeroidx.com\/legal\/privacy<\/p>\n\n<h3>Bundled Assets<\/h3>\n\n<p>The admin screens use the Poppins typeface, which ships inside the plugin and is served from your own site. No font is ever requested from an external host, so no visitor or administrator IP is exposed to a font CDN.<\/p>\n\n<ul>\n<li>Poppins \u2014 Copyright 2014-2019 Indian Type Foundry. Licensed under the SIL Open Font License 1.1, a GPL-compatible licence. Full text: <code>assets\/fonts\/Poppins-OFL.txt<\/code>. Source: https:\/\/github.com\/itfoundry\/Poppins<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin ZIP via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Make sure <strong>pretty permalinks<\/strong> are enabled (<strong>Settings \u2192 Permalinks<\/strong>, any option other than \"Plain\"). AeroIDX needs them to serve clean listing URLs.<\/li>\n<li>Open the <strong>AeroIDX<\/strong> menu in the WordPress admin sidebar.<\/li>\n<li>Enter the <strong>API Key<\/strong> from your AeroIDX account and save.<\/li>\n<\/ol>\n\n<p>Your listings will then be available at <code>\/details\/{address-slug}\/{listing-id}<\/code>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20aeroidx%20account%3F\"><h3>Do I need an AeroIDX account?<\/h3><\/dt>\n<dd><p>Yes. AeroIDX is the WordPress front end for the AeroIDX platform. You need an active account and an API key. Get one at https:\/\/app.aeroidx.com\/api-keys.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20yoast%20seo%20or%20rank%20math%3F\"><h3>Does it work with Yoast SEO or Rank Math?<\/h3><\/dt>\n<dd><p>Yes. AeroIDX detects Yoast SEO and Rank Math and feeds them the listing data so they generate the meta tags. If no SEO plugin is active, AeroIDX outputs the SEO tags itself.<\/p><\/dd>\n<dt id=\"do%20i%20have%20to%20use%20pretty%20permalinks%3F\"><h3>Do I have to use pretty permalinks?<\/h3><\/dt>\n<dd><p>Yes. AeroIDX serves listings at clean URLs, which requires the WordPress permalink setting to be anything other than \"Plain\".<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20block%20%28fse%29%20themes%3F\"><h3>Does it work with block (FSE) themes?<\/h3><\/dt>\n<dd><p>Yes. AeroIDX supports both classic themes and block themes. The listing widget is injected into the theme's content area in either case.<\/p><\/dd>\n<dt id=\"where%20do%20listing%20pages%20appear%3F\"><h3>Where do listing pages appear?<\/h3><\/dt>\n<dd><p>Every listing is rendered at <code>\/details\/{address-slug}\/{listing-id}<\/code> on your site. AeroIDX also generates an XML sitemap so search engines can find them all.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20a%20listing%20that%20is%20sold%20or%20removed%3F\"><h3>What happens to a listing that is sold or removed?<\/h3><\/dt>\n<dd><p>AeroIDX returns a proper HTTP 410 (Gone) page for delisted properties, so you don't accumulate broken links or soft 404s.<\/p><\/dd>\n<dt id=\"how%20do%20i%20style%20listing%20pages%20to%20match%20my%20theme%3F\"><h3>How do I style listing pages to match my theme?<\/h3><\/dt>\n<dd><p>AeroIDX listing pages aren't editable in the WordPress editor. They're rendered on demand from your IDX data. To style them, use the scoped CSS hooks the plugin exposes from your theme custom CSS, a page builder custom CSS field (Bricks, Elementor, etc.), or a child theme stylesheet. Your rules only affect AeroIDX pages:<\/p>\n\n<ul>\n<li><code>body.aeroidx-page<\/code>: body class on every page AeroIDX creates for you \u2014 Search, Sign In, My Account, Featured, Roster, the \/aeroidx shell, and each market page. On the built-in listing and agent pages it comes from the classic templates, so block themes render those two without it.<\/li>\n<li><code>#aeroidx-listing-detail<\/code>, <code>.aeroidx-listing-detail<\/code>: main wrapper of the listing detail page. Classic themes only.<\/li>\n<li><code>#aeroidx-agent-detail<\/code>, <code>.aeroidx-agent-detail<\/code>: main wrapper of the agent listings page. Classic themes only.<\/li>\n<li><code>.aeroidx-widget-mount<\/code>: direct parent of every AeroIDX widget, on every surface the plugin renders.<\/li>\n<li><code>.aeroidx-listing-gone<\/code>, <code>.aeroidx-agent-gone<\/code>, <code>.aeroidx-page-gone<\/code>, <code>.aeroidx-listing-error<\/code>: the \u201cno longer available\u201d and error states.<\/li>\n<\/ul>\n\n<p>The same documentation lives inside the plugin under <strong>AeroIDX &gt; Appearance<\/strong> in the WordPress admin, where each selector has a copy button and the list adapts to whether your theme is a block theme.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>New: saving your API Key now checks it with AeroIDX before storing it. A key with a character missing is refused instead of quietly saved, and the working key you already had stays in place.<\/li>\n<li>New: the Settings screen says whether AeroIDX is answering, which plan the account is on, and when it last checked.<\/li>\n<li>New: the Appearance screen adapts to your theme. It lists the selectors that exist on the theme you are actually running, and each one has a copy button.<\/li>\n<li>New: a \"where do I find my key\" link on the screens that ask for one, pointing at the page in AeroIDX that issues it.<\/li>\n<li>New: when another page already sits at the address an IDX page wants, AeroIDX asks what should happen instead of deciding on its own. Use the page that is already there, or put the IDX page at an address of its own.<\/li>\n<li>New: AeroIDX recognises the pages it set up earlier, even after you rename or move one. It offers to pick that page back up rather than build a second copy of it.<\/li>\n<li>New: market pages ask the same questions, and every market on the Markets screen shows whether its page already exists, with a button to connect it.<\/li>\n<li>Changed: changing your API Key now clears the data cached from the previous account. Switching accounts used to leave the old one's markets and widgets on screen for up to an hour.<\/li>\n<li>Changed: the setup wizard now uses the same buttons, fields and wording as the rest of the plugin's screens.<\/li>\n<li>Changed: the AeroIDX screens use the full width of the page, and the page settings sit in two columns instead of one narrow one.<\/li>\n<li>Changed: when AeroIDX uses a page you already have, it adds the IDX content below what is on that page. Nothing is removed, and you can rearrange it in the editor.<\/li>\n<li>Changed: the setup wizard asks the same questions as the Pages screen. Creating every page at once no longer reconnects a page without telling you.<\/li>\n<li>Fixed: creating an IDX page when another page already sat at its address published a duplicate at \/search-2, \/featured-2 and so on. AeroIDX stops and asks instead.<\/li>\n<li>Fixed: AeroIDX did not recognise the pages it had created itself, so deleting an IDX page and setting it up again produced another duplicate every time.<\/li>\n<li>Fixed: widgets added with the <code>[aeroidx_widget]<\/code> shortcode had no element to style, although the plugin's own documentation said they did. Every AeroIDX widget now sits inside <code>.aeroidx-widget-mount<\/code>.<\/li>\n<li>Fixed: an API Key that had stopped working removed Team-only pages and lowered the counts on the Home screen without saying why. The plugin now tells you the key was rejected.<\/li>\n<li>Fixed: the setup wizard said your key had failed when AeroIDX simply could not be reached, sending people to replace a key that was fine.<\/li>\n<li>Fixed: the admin could take around twenty seconds to load while an API Key was not working.<\/li>\n<li>Fixed: a copy button that failed to reach your clipboard gave no sign of it, so you could paste something else without noticing.<\/li>\n<li>Fixed: the styling documentation described where selectors apply. Two of the four descriptions were wrong.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>New: a Markets screen in wp-admin. Give any market on your AeroIDX account its own WordPress page, then edit that page like any other: write about the area, add your own photos, and the market's listings sit inside it.<\/li>\n<li>New: an <code>[aeroidx_market id=\"...\"]<\/code> shortcode, for dropping a single market into a page you already have.<\/li>\n<li>New: the plugin now creates a page called AeroIDX on your site. Links to a market from your AeroIDX dashboard need it, and until now you had to create that page yourself. If you already made one, the plugin uses it and leaves your content alone.<\/li>\n<li>Fixed: links to a market from your AeroIDX dashboard, from an alert, or from a Market Areas widget led nowhere on a WordPress site. They now open the right page.<\/li>\n<li>Fixed: some text on the AeroIDX admin screens was too light to read comfortably, including search box placeholders and the current page number in a list.<\/li>\n<li>Fixed: buttons on the AeroIDX admin screens kept a blue outline after being clicked, as though they were still selected.<\/li>\n<li>Fixed: the dropdowns on the AeroIDX admin screens were missing their arrow, so they looked like text fields.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Fixed: a widget pasted straight into a page, rather than added with the AeroIDX shortcode or block, only worked if the AeroIDX script was also in your site header. Widgets now work on their own, wherever you put them.<\/li>\n<li>Fixed: listing and search screens pushed the rest of the page down as they finished loading. Space is now held for them from the start, so nothing moves.<\/li>\n<li>Changed: if you added the AeroIDX script to your site header, you can remove it. The plugin loads what your widgets need by itself, and keeping both no longer loads it twice.<\/li>\n<li>Performance: that code now starts loading at the top of the page instead of the bottom, so widgets appear sooner.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>New: a Widgets screen in wp-admin. Pick a widget type, build it in the full AeroIDX builder (it opens in a new tab), and get a shortcode ready to paste on any page.<\/li>\n<li>New: a widget library to manage what you've built. Edit, duplicate, or delete a widget, and copy its shortcode with one click.<\/li>\n<li>New: testimonials widget, a carousel of client testimonials.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Fixed: creating an IDX page before saving your API Key published a page that visitors saw empty. The plugin now asks for the key first, on every route that could get there.<\/li>\n<li>New: deleting an IDX page asks you to confirm first. The page goes to the Trash, but AeroIDX stops treating it as that IDX page, and the confirmation says so.<\/li>\n<li>Design: the admin screens were rebuilt to match AeroIDX \u2014 same layout, refreshed colour, type and spacing.<\/li>\n<li>Privacy: the admin now uses a typeface that ships inside the plugin instead of loading one from an outside service, so no administrator IP reaches a font host.<\/li>\n<li>Maintenance: filtering the widget list with no matches now offers a way back to the full list.<\/li>\n<\/ul>\n\n<h4>0.2.3<\/h4>\n\n<ul>\n<li>Fixed: on sites running Yoast SEO or Rank Math, the sitemap index answered with a \"page not found\" error. Those plugins claim every URL that ends in -sitemap.xml, so the index moved to \/aeroidx-sitemap-index.xml. The old address still works wherever it worked before.<\/li>\n<li>Fixed: robots.txt no longer points search engines at the sitemap until it actually holds listings.<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Clearer, more benefit-focused plugin description and readme copy for real estate agents. No functional changes.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Internationalization: the text domain now matches the plugin slug, so translations load correctly.<\/li>\n<li>Performance: sitemap data is no longer autoloaded on every page request.<\/li>\n<li>Security: hardened URL escaping in Open Graph and Twitter Card meta tags.<\/li>\n<li>Maintenance: clearer plugin description and installation instructions.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>New: SEO-friendly agent pages at \/agent\/{name}\/{id}: clean URLs with canonical, Open Graph, Twitter Cards, and Person schema.<\/li>\n<li>New: configurable agent URL base, with 301 redirects from previously used bases so old links keep working.<\/li>\n<li>New: agent pages integrate with Yoast SEO and Rank Math, feeding agent data through their tags so output stays single-source (no duplicate meta).<\/li>\n<li>Improved: agent pages now reach full SEO parity with listing detail pages.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Get your real estate listings found on Google and turn IDX searches into leads. SEO-optimized pages for agents.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/329078","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=329078"}],"author":[{"embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/redjim"}],"wp:attachment":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=329078"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=329078"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=329078"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=329078"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=329078"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=329078"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}